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

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

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

Ответ
 
Опции темы
Старый 26.08.2010, 15:15   #1
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
PhysicsEngine

Вот хочу написать физический движок.Как можно проверить столкновение с линией
program PhysicsEngine;
var
xPos,yPos,xPosBall,yPosBall,xMove,yMove,keyAction,tecla:integer;
Bsize,Psize:integer;
procedure init;
begin
xposball
:=100;
yposball:=100;
yMove := 3;
xPos:=160;
psize:=32;
bsize:=15;
end;
begin
init
;
repeat
tecla
:=getkeypressed
keyaction:= keyToAction(tecla);
        if 
keyAction GA_LEFT then xPos := xPos 2;
        if 
keyAction GA_RIGHT then xPos := xPos 2;
        
            
setColor(255255255);
            
fillRect(00getWidthgetHeight);

            
setColor(000);

        
drawEllipse(xPosballyPosball,bsize,bsize);
        
drawEllipse(xPosball+20yPosball,bsize,bsize);
        
xPosball := xPosball xMove;
        
yPosball := yPosball yMove;
        
delay(30);
        
        
setColor(000);
    
drawline(xpos,getHeight-10,xpos-100,getHeight-10);
    
    
repaint;
until tecla=KE_STAR;
end
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 26.08.2010, 17:03   #2
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: PhysicsEngine

из старой pascal'евской игрушки:
function DistToBar(x1, y1, x2, y2, x0, y0 : Integer) : Boolean;
{находится ли точка (x0,y0) в прямоугольнике (x1,y1)-(x2,y2)}
Var
  dx, dy : Integer;
Begin
  dx := abs(x2-x1);
  dy := abs(y2-y1);
  if dx < 15 then  dx := 15;
  if dy < 15 then  dy := 15;
  DistToBar := (abs(x1-x0) <= dx) and (abs(x2-x0) <= dx)
           and (abs(y1-y0) <= dy) and (abs(y2-y0) <= dy);
End;

function DistToLine(x1, y1, x2, y2, x0, y0, maxDist : Integer) : Boolean;
{расстояние от точки (x0,y0) до отрезка (x1,y1, x2,y2)}
Var
  A, B, C : LongInt;
  dist    : Real;
Begin
  x1 := x1 - x0;
  y1 := y1 - y0;
  x2 := x2 - x0;
  y2 := y2 - y0;
  x0 := 0; {?}
  y0 := 0; {?}
  A := y1 - y2;
  B := x2 - x1;
  C := LongInt(y2)*x1 - LongInt(y1)*x2;
  dist := Sqrt(A*A + B*B);
  if dist <> 0 then  dist := abs(A*x0{?=0} + B*y0{?=0} + C) / dist;
  DistToLine := (dist <= maxDist);
End;

Function OnLine(x0, y0, dist, x1, y1, x2, y2 : Integer) : Boolean;
{проверка на пересечение линии на карте}
Begin
  OnLine := DistToBar(x1, y1, x2, y2, x0, y0)
        and DistToLine(x1, y1, x2, y2, x0, y0, dist);
End;
(Offline)
 
Ответить с цитированием
Старый 26.08.2010, 18:51   #3
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

а что за тип A, B, C : LongInt;
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 26.08.2010, 21:30   #4
cHeRsAnYa
ПроЭктировщик
 
Регистрация: 18.12.2007
Сообщений: 157
Написано 24 полезных сообщений
(для 27 пользователей)
Ответ: PhysicsEngine

То же, что и обычный Integer в MidletPascal.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
psih1 (27.08.2010)
Старый 26.08.2010, 23:37   #5
DIMMON4IK
Знающий
 
Аватар для DIMMON4IK
 
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений
(для 78 пользователей)
Ответ: PhysicsEngine

в longint просто большее макс. значение чем в integer
__________________


(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
psih1 (27.08.2010)
Старый 27.08.2010, 02:43   #6
_Nox_
ПроЭктировщик
 
Регистрация: 21.06.2009
Адрес: Беларусь, Столбцы
Сообщений: 148
Написано 32 полезных сообщений
(для 57 пользователей)
Ответ: PhysicsEngine

но в мп такого типа нет, но фактически диапазон мп-овского интеджера равен настоящему лонгинту
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
psih1 (27.08.2010)
Старый 27.08.2010, 10:32   #7
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

Спасибо а через либ game можно проверить столкновение?
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 27.08.2010, 12:05   #8
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: PhysicsEngine

а смысл?
начни лучше с броска шарика под любым углом и отскоком от стены.
потом падающим (по дуге) прямоугольничком.

прикрутить более сложную графику и сделать бесконечный хвост из либ ты всегда успеешь
(Offline)
 
Ответить с цитированием
Старый 27.08.2010, 14:21   #9
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

Вот мой подобный проект на flash
Вложения
Тип файла: zip flash.zip (321.7 Кб, 483 просмотров)
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 31.08.2010, 16:51   #10
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

Вот то что меня вдохновило
Вложения
Тип файла: zip Архив ZIP - WinRAR (2).zip (362.0 Кб, 468 просмотров)
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 01.09.2010, 04:16   #11
Trazzy
Разработчик
 
Аватар для Trazzy
 
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений
(для 225 пользователей)
Ответ: PhysicsEngine

Флеш - супер, а джар почему-то ниодин эмулятор не открыл..

Upd: только на Нокии заработала (сонька, симак и мотор отказались запускать!)
__________________
Уважай собеседника, а лучше подари ему +

Последний раз редактировалось Trazzy, 04.09.2010 в 09:21.
(Offline)
 
Ответить с цитированием
Старый 03.09.2010, 14:53   #12
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

Как проверить столкновение с линией с помошю Lib_game???
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 03.09.2010, 15:41   #13
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

вот так примерно будет выглядеть уровень
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 630
Размер:	1.9 Кб
ID:	11132  
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Старый 03.09.2010, 21:19   #14
Bananbl4
Нуждающийся
 
Аватар для Bananbl4
 
Регистрация: 17.03.2010
Адрес: Колпашево, Томская обл.
Сообщений: 88
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: PhysicsEngine

Решил свою гравити сделать? похвально. сделай ещё корректную физику камней под колёсьями, чтобы непредсказуемо кататься
__________________
Teeworlds 4ever!
(Offline)
 
Ответить с цитированием
Старый 04.09.2010, 16:06   #15
psih1
Знающий
 
Аватар для psih1
 
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений
(для 32 пользователей)
Ответ: PhysicsEngine

Сделал карту топерь вся запара со столкновением
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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