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

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

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

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 25.10.2008, 15:50   #1
Mark Castle
Знающий
 
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений
(для 3 пользователей)
Помогите доделать игру!MidletPascal.

Люди!Помогит пожалуйста доделать игру на MidletPascal'e!Короче,у меня есть код почти законченой игры,вот он:
program pole; 
const 
fieldwidth = 70; 
fieldheight = 70; 
var gameField: array[1..fieldWidth, 1..fieldHeight] of integer; 
screenWidth, screenHeight: integer; 
screenX, screenY: integer; 
play,exit:command; 
pig:image; 
X,Y:integer; 
key:integer; 
fon:image; 
F,G:integer; 
bomber:image; 
H,J:integer; 
i:integer; 
stn:image; 
O,P:integer; 
bomb:image; 
Q,U:integer; 
z:integer; 
procedure bombarding; 
var 
z:integer; 
begin 

z:=z+1; 
if z=1 then u:=u+2; 
if z=2 then u:=u+2; 
if z=3 then u:=u+2; 
if z=4 then u:=u+2; 
if z=5 then u:=u+2; 
end; 









begin 
stn:=LoadImage('/stn.png'); 
bomb:=LoadImage('/bomb.png'); 
bomber:=LoadImage('/bomber.png'); 
fon:=Loadimage('/fone.png'); 
pig:=LoadImage('/pig.png'); 
X:=25; 
Y:=45; 
F:=0; 
G:=0; 
H:=90; 
J:=4; 
O:=0; 
P:=15; 
Q:=25; 
U:=5; 


while (key<>KE_KEY0) do 
begin 

DrawImage(fon,F,G); 
DrawImage(stn,O,P); 
DrawImage(bomber,H,J); 
DrawImage(pig,X,Y); 
DrawImage(bomb,Q,U); 
SetColor(140,0,140); 
fillrect(0,50,150,90); 
if x<0 then x:=0; 
if y<0 then y:=0; 
if x>84 then x:=84; 


delay(100); 
key:=keyToAction(GetKeyPressed); 
if (key=GA_RIGHT) then X:=X+3; 
if (key=GA_LEFT) then X:=X-3; 
if (key=GA_UP) then Y:=Y-0; 
if (key=GA_DOWN) then Y:=Y+0; 
i:=i+1; 
if i=1 then H:=H-2; 
if i=2 then H:=H-2; 
if i=3 then H:=H-2; 
if i=4 then H:=H-2; 
if i=5 then H:=H-2; 
if i=6 then H:=H-2; 
if i=7 then H:=H-2; 
if i=8 then H:=H-2; 
if i=9 then H:=H-2; 
if i=10 then H:=H-2; 
if i=11 then H:=H-2; 
if i=12 then H:=H-2; 
if i=13 then H:=H-2; 
if i=14 then H:=H-2; 
if i=15 then H:=H-2; 
if i=16 then H:=H-2; 
if i=17 then H:=H-2; 
if i=18 then H:=H-2; 
if i=19 then H:=H-2; 
if i=20 then H:=H-2; 
if i=21 then H:=H-2; 
if i=22 then H:=H-2; 
if i=23 then H:=H-2; 
if i=24 then H:=H-2; 
if i=25 then H:=H-2; 
if i=26 then H:=H-2; 
if i=27 then H:=H-2; 
if i=28 then H:=H-2; 
if i=29 then H:=H-2; 
if i=30 then H:=H-2; 
if i=31 then H:=H-2; 
if i=32 then H:=H-2; 
if i=33 then H:=H-2; 
if i=34 then H:=H-2; 
if i=35 then H:=H-2; 
if i=36 then H:=H-2; 
if i=37 then H:=H-2; 
if i=38 then H:=H-2; 
if i=39 then H:=H-2; 
if i=40 then H:=H-2; 
if i=41 then H:=H-2; 
if i=42 then H:=H-2; 
if i=43 then H:=H-2; 
if i=44 then H:=H-2; 
if i=45 then H:=H+2; 
if i=46 then H:=H+2; 
if i=47 then H:=H+2; 
if i=48 then H:=H+2; 
if i=49 then H:=H+2; 
if i=50 then H:=H+2; 
if i=51 then H:=H+2; 
if i=52 then H:=H+2; 
if i=53 then H:=H+2; 
if i=54 then H:=H+2; 
if i=55 then H:=H+2; 
if i=56 then H:=H+2; 
if i=57 then H:=H+2; 
if i=58 then H:=H+2; 
if i=59 then H:=H+2; 
if i=60 then H:=H+2; 
if i=61 then H:=H+2; 
if i=62 then H:=H+2; 
if i=63 then H:=H+2; 
if i=64 then H:=H+2; 
if i=65 then H:=H+2; 
if i=66 then H:=H+2; 
if i=67 then H:=H+2; 
if i=68 then H:=H+2; 
if i=69 then H:=H+2; 
if i=70 then H:=H+2; 
if i=71 then H:=H+2; 
if i=72 then H:=H+2; 
if i=73 then H:=H+2; 
if i=74 then H:=H+2; 
if i=75 then H:=H+2; 
if i=76 then H:=H+2; 
if i=77 then H:=H+2; 
if i=78 then H:=H+2; 
if i=79 then H:=H+2; 
if i=80 then H:=H+2; 
if i=81 then H:=H+2; 
if i=82 then H:=H+2; 
if i=83 then H:=H+2; 
if i=84 then H:=H+2; 
if i=85 then H:=H+2; 
if i=86 then H:=H+2; 
if i=87 then H:=H+2; 
if i=88 then H:=H+2; 
if i=89 then H:=H+2; 
if i=90 then H:=H+2; 
if i=91 then H:=H+2; 
if i=92 then 
begin 
i:=0; 
H:=90; 
end; 

bombarding; 







repaint; 

end; 
end.
Смысл игры такой:мужик сверху экрана кидаецо всякими хренями,которые надо ловить с помощью платформы.
Проблема:
Не могу сделать так,чтобы при попадании на платформу предмета он исчезал,а если он пролетел мимо платформы то заканчиваецо игра.
Помогите плиз,очень нада!А то уже все сделал,а это не могу...

Последний раз редактировалось ViNT, 26.10.2008 в 22:20.
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 16:31   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Не знаю, про что игра, но этот код:
if i=1 then H:=H-2;
if i=2 then H:=H-2;
if i=3 then H:=H-2;
if i=4 then H:=H-2;
if i=5 then H:=H-2;
if i=6 then H:=H-2;
if i=7 then H:=H-2;
if i=8 then H:=H-2;
if i=9 then H:=H-2;
if i=10 then H:=H-2;
if i=11 then H:=H-2;
if i=12 then H:=H-2;
if i=13 then H:=H-2;
if i=14 then H:=H-2;
if i=15 then H:=H-2;
if i=16 then H:=H-2;
if i=17 then H:=H-2;
if i=18 then H:=H-2;
if i=19 then H:=H-2;
if i=20 then H:=H-2;
if i=21 then H:=H-2;
if i=22 then H:=H-2;
if i=23 then H:=H-2;
if i=24 then H:=H-2;
if i=25 then H:=H-2;
if i=26 then H:=H-2;
if i=27 then H:=H-2;
if i=28 then H:=H-2;
if i=29 then H:=H-2;
if i=30 then H:=H-2;
if i=31 then H:=H-2;
if i=32 then H:=H-2;
if i=33 then H:=H-2;
if i=34 then H:=H-2;
if i=35 then H:=H-2;
if i=36 then H:=H-2;
if i=37 then H:=H-2;
if i=38 then H:=H-2;
if i=39 then H:=H-2;
if i=40 then H:=H-2;
if i=41 then H:=H-2;
if i=42 then H:=H-2;
if i=43 then H:=H-2;
if i=44 then H:=H-2;
if i=45 then H:=H+2;
if i=46 then H:=H+2;
if i=47 then H:=H+2;
if i=48 then H:=H+2;
if i=49 then H:=H+2;
if i=50 then H:=H+2;
if i=51 then H:=H+2;
if i=52 then H:=H+2;
if i=53 then H:=H+2;
if i=54 then H:=H+2;
if i=55 then H:=H+2;
if i=56 then H:=H+2;
if i=57 then H:=H+2;
if i=58 then H:=H+2;
if i=59 then H:=H+2;
if i=60 then H:=H+2;
if i=61 then H:=H+2;
if i=62 then H:=H+2;
if i=63 then H:=H+2;
if i=64 then H:=H+2;
if i=65 then H:=H+2;
if i=66 then H:=H+2;
if i=67 then H:=H+2;
if i=68 then H:=H+2;
if i=69 then H:=H+2;
if i=70 then H:=H+2;
if i=71 then H:=H+2;
if i=72 then H:=H+2;
if i=73 then H:=H+2;
if i=74 then H:=H+2;
if i=75 then H:=H+2;
if i=76 then H:=H+2;
if i=77 then H:=H+2;
if i=78 then H:=H+2;
if i=79 then H:=H+2;
if i=80 then H:=H+2;
if i=81 then H:=H+2;
if i=82 then H:=H+2;
if i=83 then H:=H+2;
if i=84 then H:=H+2;
if i=85 then H:=H+2;
if i=86 then H:=H+2;
if i=87 then H:=H+2;
if i=88 then H:=H+2;
if i=89 then H:=H+2;
if i=90 then H:=H+2;
if i=91 then H:=H+2;
ацки жжот

Почти что Почта России:


Выучить проверку на > и < не пробовал?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
johnk (25.10.2008), Phantom (28.10.2008), ProFessor_nic (09.07.2012), tormoz (25.10.2008)
Старый 25.10.2008, 17:18   #3
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Аватар размером 1 Мб тоже жжот
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 17:30   #4
Mark Castle
Знающий
 
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Блин!так кто то можеь помочь?я ж не виноват,чо недавно начал учить midletpascal!
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 18:01   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Блин!так кто то можеь помочь?я ж не виноват,чо недавно начал учить midletpascal!
Тогда сначала приведи код в порядок а уже потом проси помочь.
В таком виде в ём никто не разберётся даже если захочет.

Аватар размером 1 Мб тоже жжот
Опера 9.хх - Клик правой кнопкой - Блокировать содержимое - Клик на неугодной аватаре и больше она тебя не будет беспокоить
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 18:30   #6
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Меня беспокоит не аватара, а ее размер
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 19:32   #7
Mark Castle
Знающий
 
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Помогите доделать игру!MidletPascal.


Блин,люди,ктото мне раскажет как сделать так,чтобы при попадании на платформу предмета он исчезал,а если он пролетел мимо платформы то заканчиваецо игра?И как вообще делаюца преграды в игре????!!!!!!!!!!!!!
(Offline)
 
Ответить с цитированием
Старый 26.10.2008, 07:54   #8
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Выложи свой исходник в архиве, а то не видно что там за мужик и что он там кидает.
А пока научись использовать операторы AND и OR.
Строки
if (i>0) and (i<45then H:=H-2;
или
if (i>44) and (i<92then H:=H+2;
или
if (z>0) and (z<6then u:=u+2
Не только намного сократят текст твоего исходника, но и убыстрят работу программы.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (26.10.2008)
Старый 26.10.2008, 18:51   #9
Mark Castle
Знающий
 
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений
(для 3 пользователей)
Лампочка Ответ: Помогите доделать игру!MidletPascal.

Все сделал...Но есть еще одна проблема...вот кусочик проги:
if (q>x) and (q<(x+19)) and (u<43) and (u>38 ) then bombarding;
кароче,этот кусок делает то,что при попадании предмета на платформу вызываецо процедура,котороя дает предмету новые координаты,и он снова падает.Здесь проблем нет.Но когда я поймал предмет в процедуре,я не могу перейти к следующей:
procedure bombarding;
begin
q:=15;
u:=0;
if (q>x) and (q<(x+19)) and (u<43) and (u>38 ) then sledujushcajaprocedura;
end;
Пожалуста разъясните почему оно не пашет,и как сделать,чтоб все работало!
(Offline)
 
Ответить с цитированием
Старый 26.10.2008, 19:33   #10
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Сообщение от Mark Castle Посмотреть сообщение

procedure bombarding;
begin
q:=15;
u:=0;

if (q>x) and (q<(x+19)) and (u<43) and (u>38 ) then sledujushcajaprocedura;

end;
Пожалуста разъясните почему оно не пашет,и как сделать,чтоб все работало!
Ты пытаешься вызвать процедуру из самой себя (вроде рекурсией называется)
Вынеси жирную строку из процедуры в игровой цикл.
Выглядеть будет примерно так:
Program Bombardeer;
const 
fieldwidth 70
fieldheight 70;
var 
gameField: array[1..fieldWidth1..fieldHeightof integer
screenWidthscreenHeight integer
screenXscreenY             integer;  
X,Y,key                          :integer;
Q,U,z,O,P,i,H,J,F,G           :integer
pig,fon,bomber,stn,bomb   :image
play,exit                         :command;
//...........
procedure bombarding;
begin
q
:=15;
u:=0;
end;
//.........
begin
stn
:=LoadImage('/stn.png'); 
bomb:=LoadImage('/bomb.png'); 
bomber:=LoadImage('/bomber.png'); 
fon:=Loadimage('/fone.png'); 
pig:=LoadImage('/pig.png');
X:=25Y:=45
F:=0G:=0H:=90J:=4
O:=0P:=15Q:=25U:=5;
repeat //Начало игрового цикла

DrawImage(fon,F,G); 
DrawImage(stn,O,P); 
DrawImage(bomber,H,J); 
DrawImage(pig,X,Y); 
DrawImage(bomb,Q,U); 
SetColor(140,0,140); 
fillrect(0,50,150,90); 
if 
x<0 then x:=0
if 
y<0 then y:=0
if 
x>84 then x:=84;

key:=keyToAction(GetKeyPressed); 
if (
key=GA_RIGHTthen X:=X+3
if (
key=GA_LEFTthen X:=X-3
if (
key=GA_UPthen Y:=Y-0
if (
key=GA_DOWNthen Y:=Y+0
i:=i+1;
if (
i>0) and (i<45then H:=H-2;
if (
i>44) and (i<92then H:=H+2;
if 
i=92 then begin i:=0H:=90end;
if (
q>x) and (q<(x+19)) and (u<43) and (u>38 then bombarding;
repaint;
delay(100);//Лучше использвать именно здесь(т.е. после repaint;)
until (key=KE_KEY0);// выходим из цикла по нажатию "0"
end

Только я не понял, что именно должна делать процедура bombarding.
И вообще если хочешь, чтоб тебе помогли, то
1) либо пиши код программы с пояснениями по каждой строке
2) либо выкладывай исходнег(заархив-ую папку с проектом)

Последний раз редактировалось Cliffe Snake, 26.10.2008 в 19:56.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mark Castle (26.10.2008)
Старый 26.10.2008, 20:01   #11
Mark Castle
Знающий
 
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

а как из процедуры bombarding вызвать другую процедуру?
(Offline)
 
Ответить с цитированием
Старый 26.10.2008, 20:52   #12
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Сообщение от Mark Castle Посмотреть сообщение
а как из процедуры bombarding вызвать другую процедуру?
Вроде бы перед этими процедурами надо вставить Implementation; и тогда можно будет вызывать из процедуры другую процедуру.
Необходимость вложенных вызовов процедур, по-моему, минимальна, можно почти всегда обойтись последовательным вызовом процедур.
З.Ы.
Да скинь ты исходник, никто его у тебя не украдёт.
(Offline)
 
Ответить с цитированием
Старый 26.10.2008, 21:10   #13
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Вы что, ребята. implementation МП вообще не поддерживает. Процедуры можно вызывать друг из друга, единственная оговорка - нужно, чтобы объявление процедуры, которую вызывают, стояло до процедуры, из которой вызывают. Рекурсия вроде бы тоже не запрещена.
(Offline)
 
Ответить с цитированием
Старый 26.10.2008, 21:42   #14
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Сообщение от Romanzes Посмотреть сообщение
Вы что, ребята. implementation МП вообще не поддерживает.
Вообщета она есть(правда я её не юзал), иди поройся в справке там чёто было про implementation.
Сообщение от Romanzes Посмотреть сообщение
Процедуры можно вызывать друг из друга, единственная оговорка - нужно, чтобы объявление процедуры, которую вызывают, стояло до процедуры, из которой вызывают.
На эту оговорку можно забить, если использовать forward; выглядит вот так:
Program Procedures;
var 
i,j,k,key integer;
/////////////////////////////////////////
///////// Procedures&Functions //////////
/////////////////////////////////////////
Procedure pervaja;
begin
  vtoraja
;
end;
Procedure vtorajaforward;
begin
//....
end;
{============================}
{============
MAIN============}
{============================}
begin
//........
 
pervaja;
//......
end
то есть, если вы хотите вызывать процедуру из других процедур, то вы должны при её объявлении использовать forward;

Последний раз редактировалось Cliffe Snake, 26.10.2008 в 21:50.
(Offline)
 
Ответить с цитированием
Старый 27.10.2008, 06:08   #15
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Помогите доделать игру!MidletPascal.

Сообщение от Mark Castle Посмотреть сообщение
procedure bombarding;
begin
q:=15;
u:=0;
if (q>x) and (q<(x+19)) and (u<43) and (u>38 ) then sledujushcajaprocedura;
end;
Продолжаем разбор кода. Накой х проверять переменные q и u если они строкой раньше были изменены на 15 и 0? Переменная u со значением 0 никогда не будет одновременно <43 и >38. Так что ничего странного нет, что sledujushcajaprocedura НИКОГДА не вызовется.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактор карт mr.DIMAS FAQ 33 12.08.2009 14:17
Помогите сделать игру танчики !!! DannN MidletPascal 9 19.01.2009 15:45
Помогите с либой для MIDletPascal Jhonny JAVA Micro Edition 0 05.11.2007 13:00
Редактор 2D карт. Enemy Болтовня 8 05.01.2007 09:33
как мне назвать игру ? jimon Болтовня 22 05.02.2006 15:38


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


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