forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Игра Сапер (http://forum.boolean.name/showthread.php?t=17320)

Mr.Extraneo 29.09.2012 13:56

Игра Сапер
 
Я новичок, пытаюсь изучать MidletPascal. Сейчас я умею немногое, поскольку сам паскаль я изучил только до массивов. В интернете на одном сайте дошел до урока по созданию игры "Сапер", но к сожалению, автор рассказал все только наполовину, второй части урока я так и не нашел. В ней должно было быть рассказано, как будут находится клетки с минами. Поскольку мне не хочется останавливаться на полпути, я попытался дальше написать код, какой могу. Но он у меня не работает (возможно потому что я еще плохо знаком с двумерными массивами). Так как из-за этого я не могу продвинуться дальше в написании мидлета, то надеюсь, вы мне сможете помочь и подсказать, что не так. вот код (красным выделена та часть, которую я сам написал, она правда очень корявая)
Код:

var i,k,j,key,xcursor,ycursor: integer;
  mine: array[1..6,1..6] of boolean;
begin
  j:=0;
  xcursor:=6;
  ycursor:=6;
  for i:=1 to 6 do mine[random(5)+1,random(5)+1]:=true;
  repeat
  repeat
    key:=getkeyclicked;
    if j=0 then
      begin

        SetColor (255,255,255);
        FillRect (0,0,128,128);
        SetColor(0,0,0);
      end;
    if KeyToAction(key)=Ga_left then xcursor:=xcursor-20;
    if KeyToAction(key)=Ga_right then xcursor:=xcursor+20;
    if KeyToaction(key)=Ga_up then ycursor:=ycursor-20;
    if keytoaction(key)=ga_down then ycursor:=ycursor+20;
    if xcursor<6 then xcursor:=106
    if xcursor>106 then xcursor:=6;
    if ycursor<6 then ycursor:=106;
    if ycursor>106 then ycursor:=6;
    drawrect(xcursor,ycursor,16,16);
    if j=0 then
      begin

        for i:=0 to 6 do
          DrawLine(4,(i*20)+4,124,(i*20)+4);
        for k:=0 to 6 do
          DrawLine((k*20)+4,4,(k*20)+4,124)
      end;
    repaint;
  until keytoaction(key)=GA_FIRE;
  for i:=1 to 6 do
    for k:=1 to 6 do
      begin
        if mine[i,k]=true then
          begin
            if (i=(ycursor-6)/2+1) and (k=(xcursor-6)/2+1) then
              begin
                SetColor(255,0,0);
                FillRect(xcursor,ycursor,16,16);
                repaint;
                j:=j+1;
              end;
          end;
      end;

  until false;
end.


P_e_t_e_r 29.09.2012 14:55

Ответ: Игра Сапер
 
Не вдаваясь в подробности можно сразу заметить, что Repaint можно сделать один раз после всех преобразований, как рекомендуется в мануале.
Ну и одинаковые вычисления типа (ycursor-6)/2+1 лучше делать перед циклом, чтобы они в цикле много раз не повторялись.
А на каком сайте вы нашли пример, любопытно бы на него взглянуть :)
ps. Тоже недавно делал Сапера.

Mr.Extraneo 29.09.2012 15:00

Ответ: Игра Сапер
 
Цитата:

Сообщение от P_e_t_e_r (Сообщение 239373)
Не вдаваясь в подробности можно сразу заметить, что Repaint можно сделать один раз после всех преобразований, как рекомендуется в мануале.
Ну и одинаковые вычисления типа (ycursor-6)/2+1 лучше делать перед циклом, чтобы они в цикле много раз не повторялись.
А на каком сайте вы нашли пример, любопытно бы на него взглянуть :)
ps. Тоже недавно делал Сапера.

На сайте http://midletpascal.at.ua/index/0-17. Ну и я могу предположить, что создатель сайта зарегистрирован на этом форуме)

tormoz 29.09.2012 18:53

Ответ: Игра Сапер
 
Мне очень стыдно.
Я не умею играть в сапера. Пару раз пытался, но не понял в чем геймплей.
Памагите, страшно умирать, не познав всю глубину глубин...

Mr.Extraneo 29.09.2012 19:37

Ответ: Игра Сапер
 
Цитата:

Сообщение от tormoz (Сообщение 239379)
Мне очень стыдно.
Я не умею играть в сапера. Пару раз пытался, но не понял в чем геймплей.
Памагите, страшно умирать, не познав всю глубину глубин...

Это сарказм?

tormoz 29.09.2012 20:34

Ответ: Игра Сапер
 
Цитата:

Сообщение от Mr.Extraneo (Сообщение 239380)
Это сарказм?

Это трагедия

Harter 29.09.2012 21:22

Ответ: Игра Сапер
 
Цитата:

Сообщение от tormoz (Сообщение 239379)
Мне очень стыдно.
Я не умею играть в сапера. Пару раз пытался, но не понял в чем геймплей.
Памагите, страшно умирать, не познав всю глубину глубин...

Та же фигня.


Часовой пояс GMT +4, время: 13:01.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot