Показать сообщение отдельно
Старый 29.09.2012, 13:56   #1
Mr.Extraneo
AnyKey`щик
 
Регистрация: 29.09.2012
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Игра Сапер

Я новичок, пытаюсь изучать 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.

Последний раз редактировалось Mr.Extraneo, 29.09.2012 в 14:43. Причина: нашел ошибки у себя и исправил, правда от этого ничего не изменилось
(Offline)
 
Ответить с цитированием