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

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

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

Ответ
 
Опции темы
Старый 26.01.2009, 22:18   #1
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Dendy'вские псевдо-3D гонки на MP

давным-давно после просмотра псевдо-3D гонок, придумал алгоритм для отображения местности и перемещения на нем, сегодня наткнулся на исходники, и решил переложить в MP.
___
Идея проста, здесь не используется 3D и даже не 2D, а 1D пространство! т.е. машина едет по одномерному массиву каждая ячейка - текущее состояние дороги т.е.: 0-прямая; -1 -поворот налево; +1 -поворот направо.
"физика" слабоватая, т.к. версия была полностью на ассемблере, без тригонометричекских функций, только целочисленные вычисления
var
{Наверное также сделаны подобные игрушки, я не разбирался... но если нет, то ставьте мой копирайт ;)}
n1 :array[0..99]of integer;
n2 :array[0..10]of image;
n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16:integer;
begin
{programming by arT (c).   e-mail: [email protected]}
n1[0]:=0;n1[1]:=0;n1[2]:=-1;n1[3]:=-1;n1[4]:=-1;
n1[5]:=-1;n1[6]:=-1;n1[7]:=-1;n1[8]:=-1;n1[9]:=-1;
n1[10]:=0;n1[12]:=1;n1[13]:=1;n1[14]:=1;n1[15]:=1;
n1[16]:=0;n1[17]:=-1;n1[18]:=-1;n1[19]:=-1;n1[20]:=0;
n1[21]:=0;n1[22]:=0;n1[23]:=1;n1[24]:=0;n1[25]:=-1;
n1[26]:=0;n1[27]:=0;n1[28]:=1;n1[29]:=1;n1[30]:=1;
n1[31]:=0;n1[32]:=0;n1[33]:=0;n1[34]:=0;n1[35]:=0;
n1[36]:=0;n1[37]:=0;n1[38]:=0;n1[39]:=1;n1[40]:=0;
n1[41]:=0;n1[42]:=0;n1[43]:=1;n1[44]:=0;n1[45]:=-1;
n1[46]:=-1;n1[47]:=0;n1[48]:=1;n1[49]:=1;n1[50]:=1;
n1[51]:=0;n1[52]:=1;n1[53]:=1;n1[54]:=1;n1[55]:=0;
n1[56]:=0;n1[57]:=0;n1[58]:=0;n1[59]:=-1;n1[60]:=-1;
for n3:=0 to 10 do n2[n3]:=loadimage('/'+n3+'.png');
n4:=getwidth;
n6:=n4 div 2;
n5:=getheight;
n8:=0;
n9:=n6;
n16:=0;
n7:=0;
repeat
setcolor(0,255,0);
fillrect(0,99,n4,n5-99);
n12:=n9;
for n11:=n5-1 downto 99 do
begin
n12:=n12+((n5-n11)div 16)*n1[(n8+((n5-1)-n11)*8)div 256];
n13:=n12-(n11-60);
n14:=n12+(n11-60);
if n13<0 then n13:=0;
if n14>n4 then n14:=n4;
setcolor(60,40,30);
while n13<n14 do begin plot(n13,n11);n13:=n13+1;end;
n13:=n12-((n11-99)div 8);
n14:=n12+((n11-99)div 8);
if n13<0 then n13:=0;
if n14>n4 then n14:=n4;
n15:=(n8+((n5-1)-n11)*8)and $ff;
if ((n15>=0)and (n15<=40))or ((n15>=80)and (n15<=120))or ((n15>=160)and (n15<=200))then
begin
setcolor(255,255,255);
while n13<n14 do begin plot(n13,n11);n13:=n13+1;end;
end;
end;
drawimage(n2[0],-((255-n12)and $ff),0);
n15:=3-n7;
if (n8 and 12)<>0 then n15:=n15+5;
drawimage(n2[n15],n6-23,n5-30);
setcolor(255,255,255);
drawtext('x:'+n8+' y:'+n9+' spd:'+n16+' cnt:'+n12,0,0);
repaint;
n10:=keytoaction(getkeypressed);
if (n10=ga_up)then if (n16<30)then n16:=n16+2;
if (n10=ga_down)then if (n16>0)then n16:=n16-2;
if (n10=ga_right)then if (n7<2)then n7:=n7+1;
if (n10=ga_left)then if (n7>-2)then n7:=n7-1;
if n16>0 then
begin
n8:=n8+(n16 div 2);
if n8>(56*256)then n8:=0;//restart
n9:=n9-n7+(1+(n16 div 8))*n1[(n8+128)div 256];
if n9<0 then n9:=0;
if n9>n4 then n9:=n4;
if (n9<=0)or (n9>=n4)then if (n16>3)then n16:=n16-3;
if (n16>60)then
if (n7>0)then n7:=n7-1
else if (n7<0)then n7:=n7+1;
end;
delay(10);
until n10=ga_fire;
end.
Вложения
Тип файла: zip f1.zip (11.9 Кб, 655 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо abcdef за это полезное сообщение:
Romanzes (27.01.2009), Rumata (15.11.2009)
Старый 10.03.2009, 12:43   #2
ASMjavaC
Оператор ЭВМ
 
Регистрация: 02.03.2009
Сообщений: 26
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

неплохо неплохо.. вот рандомная трасса + пояснения
program race01;
var
{
Наверное также сделаны подобные игрушкия не разбирался... но если нетто ставьте мой копирайт ;)}
n1 :array[0..99]of integer;
n2 :array[0..10]of image;
n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16:integer;
begin
{programming by arT (c).   e-mailironWoodcutter@bk.ru}
///////////////////////////////////
for n3:=0 to 60 do n1[n3]:=random(3)-1////создаем трассу
///////////////////////////////////
for n3:=0 to 10 do n2[n3]:=loadimage('/'+n3+'.png'); ////грузим в масив рисунки (10) из res\
n4:=getwidth;
n6:=n4 div 2;
n5:=getheight;
n8:=0;
n9:=n6;
n16:=0;
n7:=0;
repeat
setcolor
(0,255,0);                ////нижнюю половину
fillrect(0,99,n4,n5-99);    ////прорисовываем зеленым
n12:=n9;
for 
n11:=n5-1 downto 99 do ////строим дорогу
begin
n12
:=n12+((n5-n11)div 16)*n1[(n8+((n5-1)-n11)*8)div 256];
n13:=n12-(n11-60);
n14:=n12+(n11-60);
if 
n13<0 then n13:=0;
if 
n14>n4 then n14:=n4;
setcolor(60,40,30);
while 
n13<n14 do begin plot(n13,n11);n13:=n13+1;end////рисуем дорогу
n13:=n12-((n11-99)div 8);
n14:=n12+((n11-99)div 8);
if 
n13<0 then n13:=0;
if 
n14>n4 then n14:=n4;
n15:=(n8+((n5-1)-n11)*8)and $ff
if ((
n15>=0)and (n15<=40))or ((n15>=80)and (n15<=120))or ((n15>=160)and (n15<=200))then
begin
setcolor
(255,255,255);
while 
n13<n14 do begin plot(n13,n11);n13:=n13+1;end////рисуем разметку
end;
end;
drawimage(n2[0],-((255-n12)and $ff),0); ////вставляем небо
n15:=3-n7;
if (
n8 and 12)<>0 then n15:=n15+5;
drawimage(n2[n15],n6-23,n5-30);  ////вставляем тачку
setcolor(255,255,255);
drawtext('x:'+n8+' y:'+n9+' spd:'+n16+' cnt:'+n12,0,0); ////инфа вверху
repaint;
n10:=keytoaction(getkeypressed);////управление
if (n10=ga_up)then if (n16<30)then n16:=n16+2;
if (
n10=ga_down)then if (n16>0)then n16:=n16-2;
if (
n10=ga_right)then if (n7<2)then n7:=n7+1;
if (
n10=ga_left)then if (n7>-2)then n7:=n7-1;
if 
n16>0 then
begin
n8
:=n8+(n16 div 2);
if 
n8>(56*256)then n8:=0;//restart
n9:=n9-n7+(1+(n16 div 8))*n1[(n8+128)div 256];
if 
n9<0 then n9:=0;
if 
n9>n4 then n9:=n4;
if (
n9<=0)or (n9>=n4)then if (n16>3)then n16:=n16-3;
if (
n16>60)then
if (n7>0)then n7:=n7-1
else if (n7<0)then n7:=n7+1;
end;
delay(10);
until n10=ga_fire;
end
(Offline)
 
Ответить с цитированием
Старый 14.03.2009, 11:25   #3
KAK? TAK!
Нуждающийся
 
Регистрация: 07.03.2009
Сообщений: 98
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

ррс с
(Offline)
 
Ответить с цитированием
Старый 15.03.2009, 14:13   #4
ASMjavaC
Оператор ЭВМ
 
Регистрация: 02.03.2009
Сообщений: 26
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

KAK? TAK!
что случилось?
(Offline)
 
Ответить с цитированием
Старый 19.03.2009, 13:52   #5
KAK? TAK!
Нуждающийся
 
Регистрация: 07.03.2009
Сообщений: 98
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

заглавие 3D гонки а тут
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 21:48   #6
Dj_Alex
ПроЭктировщик
 
Аватар для Dj_Alex
 
Регистрация: 08.03.2009
Адрес: Saransk
Сообщений: 143
Написано 25 полезных сообщений
(для 45 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

а что смысл слова "псевдо" не понятно?
(Offline)
 
Ответить с цитированием
Старый 21.03.2009, 23:14   #7
ASMjavaC
Оператор ЭВМ
 
Регистрация: 02.03.2009
Сообщений: 26
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

кстати использование одномерного массива вообщето и есть привычная школьная 2Д пространство(ХОY) (индекс-х,значение-у), плоскость не построешь но кривую какраз да(что и используется в данной игре) - эт так к слову о пространствах и масивах
(Offline)
 
Ответить с цитированием
Старый 22.03.2009, 12:52   #8
Dj_Alex
ПроЭктировщик
 
Аватар для Dj_Alex
 
Регистрация: 08.03.2009
Адрес: Saransk
Сообщений: 143
Написано 25 полезных сообщений
(для 45 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

на эмуле тормозит пострашному. может стоит рисовать не точками а горизонтальными линиями?
(Offline)
 
Ответить с цитированием
Старый 22.03.2009, 13:03   #9
Dj_Alex
ПроЭктировщик
 
Аватар для Dj_Alex
 
Регистрация: 08.03.2009
Адрес: Saransk
Сообщений: 143
Написано 25 полезных сообщений
(для 45 пользователей)
Ответ: Dendy'вские псевдо-3D гонки на MP

заменил строчку
while n13<n14 do begin plot(n13,n11);n13:=n13+1;end;
на
drawline(n13,n11,n14,n11);
и скорость заметно прибавилась
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"NGGS" проект: Убойные гонки Snake_X Проекты на Blitz3D 25 26.08.2010 23:30
DragonDrake - 2D (псевдо 3D) аркада :) TheThing Проекты на Blitz3D 2 09.11.2008 20:35
Отображение текста с тегами (псевдо-HTML) Skythrone Основной форум 4 26.07.2008 22:27


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


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