Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 29.09.2012, 14:55   #2
P_e_t_e_r
AnyKey`щик
 
Регистрация: 21.08.2012
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Игра Сапер

Не вдаваясь в подробности можно сразу заметить, что Repaint можно сделать один раз после всех преобразований, как рекомендуется в мануале.
Ну и одинаковые вычисления типа (ycursor-6)/2+1 лучше делать перед циклом, чтобы они в цикле много раз не повторялись.
А на каком сайте вы нашли пример, любопытно бы на него взглянуть
ps. Тоже недавно делал Сапера.
(Offline)
 
Ответить с цитированием
Старый 29.09.2012, 15:00   #3
Mr.Extraneo
AnyKey`щик
 
Регистрация: 29.09.2012
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Игра Сапер

Сообщение от P_e_t_e_r Посмотреть сообщение
Не вдаваясь в подробности можно сразу заметить, что Repaint можно сделать один раз после всех преобразований, как рекомендуется в мануале.
Ну и одинаковые вычисления типа (ycursor-6)/2+1 лучше делать перед циклом, чтобы они в цикле много раз не повторялись.
А на каком сайте вы нашли пример, любопытно бы на него взглянуть
ps. Тоже недавно делал Сапера.
На сайте http://midletpascal.at.ua/index/0-17. Ну и я могу предположить, что создатель сайта зарегистрирован на этом форуме)
(Offline)
 
Ответить с цитированием
Старый 29.09.2012, 18:53   #4
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Игра Сапер

Мне очень стыдно.
Я не умею играть в сапера. Пару раз пытался, но не понял в чем геймплей.
Памагите, страшно умирать, не познав всю глубину глубин...
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
.:MaSe:. (18.11.2013), Harter (29.09.2012)
Старый 29.09.2012, 19:37   #5
Mr.Extraneo
AnyKey`щик
 
Регистрация: 29.09.2012
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Игра Сапер

Сообщение от tormoz Посмотреть сообщение
Мне очень стыдно.
Я не умею играть в сапера. Пару раз пытался, но не понял в чем геймплей.
Памагите, страшно умирать, не познав всю глубину глубин...
Это сарказм?
(Offline)
 
Ответить с цитированием
Старый 29.09.2012, 20:34   #6
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Игра Сапер

Сообщение от Mr.Extraneo Посмотреть сообщение
Это сарказм?
Это трагедия
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
.:MaSe:. (18.11.2013), Harter (29.09.2012)
Старый 29.09.2012, 21:22   #7
Harter
Бывалый
 
Аватар для Harter
 
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений
(для 2,520 пользователей)
Ответ: Игра Сапер

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com