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

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

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

Ответ
 
Опции темы
Старый 03.04.2009, 04:32   #106
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: The Maze

KAK? TAK!, от формата изображений совершенно ничего не зависит. Разве что загрузка одних может быть медленнее, чем загрузка других на тысячные доли секунды, но когда изображения уже в памяти - разницы никакой.
(Offline)
 
Ответить с цитированием
Старый 03.04.2009, 13:05   #107
KAK? TAK!
Нуждающийся
 
Регистрация: 07.03.2009
Сообщений: 98
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: The Maze

все равно
(Offline)
 
Ответить с цитированием
Старый 05.04.2009, 16:40   #108
scorey
Оператор ЭВМ
 
Аватар для scorey
 
Регистрация: 07.02.2009
Адрес: Чебоксары
Сообщений: 28
Написано одно полезное сообщение
Ответ: The Maze

Я нашёл исходники всех фалов .class из игры Bunker3D на Java
Посмотрите!
вот архив
и сама игра
Вложения
Тип файла: zip Bunker3d.zip (37.7 Кб, 553 просмотров)
(Offline)
 
Ответить с цитированием
Старый 05.04.2009, 16:45   #109
scorey
Оператор ЭВМ
 
Аватар для scorey
 
Регистрация: 07.02.2009
Адрес: Чебоксары
Сообщений: 28
Написано одно полезное сообщение
Ответ: The Maze

-------
Вложения
Тип файла: zip Bunker3DGame.zip (125.9 Кб, 552 просмотров)
(Offline)
 
Ответить с цитированием
Старый 11.04.2009, 15:54   #110
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

если это исходники... - то можно с уверенностью сказать, что все компилированные java-программы идут в исходных кодах
(Offline)
 
Ответить с цитированием
Старый 04.05.2009, 20:23   #111
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: The Maze

IronWoodCutter (abcdef), ты вроде переделывал как-то мидлетпаскалевский математический класс, чтобы методы назывались по-нормальному. Вот сегодня я лазил по инету в поисках реализации квадратного корня в fixed-point, и наткнулся на вот это: http://home.comcast.net/~ohommes/MathFP/ . Я с удивлением обнаружил, что это полная копия F.class, но с понятными названиями методов! Очень полезная вещь.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Romanzes за это полезное сообщение:
abcdef (05.05.2009), Phantom (04.05.2009)
Старый 05.05.2009, 10:47   #112
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

да, это практически F.class, только в MidletPascal'e он немножко расширен, а в моей переделке немножко оптимизирован
(Offline)
 
Ответить с цитированием
Старый 02.08.2009, 17:58   #113
DIMMON4IK
Знающий
 
Аватар для DIMMON4IK
 
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений
(для 78 пользователей)
К Cliffe Snake
--------------
А ты можеш к своёму варианту прикрутить карту в txt, двери и немцев? Стрельба необязательная.
ОЧЕНЬ НАДО.
НА СПАСИБО НЕ ЖАДНЫЙ!!!

Последний раз редактировалось DIMMON4IK, 02.08.2009 в 18:17.
(Offline)
 
Ответить с цитированием
Старый 06.08.2009, 01:12   #114
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: The Maze

Карту в txt без проблем, а двери и немцев, хз.
(Offline)
 
Ответить с цитированием
Старый 07.08.2009, 14:02   #115
DIMMON4IK
Знающий
 
Аватар для DIMMON4IK
 
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений
(для 78 пользователей)
Карту плиз!!!
(Offline)
 
Ответить с цитированием
Старый 12.08.2009, 11:46   #116
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

Если кому интересно - нашел в "Советы по Delphi от Валентена Озерова 1-1000" алгоритм вычислений с произвольной величиной (можно адаптировать на MP в алгоритм с фиксированной точкой для больших величин), вот текст статьи:
____
Огромные числа
Данный модуль использует массив байт для предоставления БОЛЬШИХ чисел. Бинарно-хранимые числа заключены в массив, где первый элемент является Наименьшим Значимым Байтом (Least Significant Byte - LS, последний - Наибольшим Значимым Байтом (Most Significant Byte - MS, подобно всем Intel-целочисленным типам.
Арифметика здесь использует не 10- или 2-тиричную, а 256-тиричную систему исчисления, чтобы каждый байт представлял одну (1) цифру.

Числа HugeInttype - Подписанные Числа (Signed Numbers).

При компиляции с директивой R+, ADD и MUL могут в определенных обстоятельствах генерировать "Arithmetic Overflow Error" (RunError(215)) - ошибка арифметического переполнения. В таком случае пользуйтесь переменной "HugeIntCarry".

Переменная "HugeIntDiv0" используется для проверки деления на ноль.

Используйте {$DEFINE HugeInt_xx } или поле "Conditional defines" (символ условного компилирования) в "Compiler options" (опции компилятора) для задания размерности, где xx должно быть равно 64, 32 или 16, в противном случае HugeIntSize будет равен 8 байтам.
unit HugeInts;
interface

const
{$IFDEF HugeInt_64 }

HugeIntSize = 64;

{$ELSE}{$IFDEF HugeInt_32 }

HugeIntSize = 32;
{$ELSE}{$IFDEF HugeInt_16 }

HugeIntSize = 16;
{$ELSE}

HugeIntSize = 8;
{$ENDIF}{$ENDIF}{$ENDIF}

HugeIntMSB  = HugeIntSize-1;

type

HugeInt = array[0..HugeIntMSB] of Byte;

const

HugeIntCarry: Boolean = False;
HugeIntDiv0:  Boolean = False;


procedure HugeInt_Min(var a: HugeInt);                 { a := -a }
procedure HugeInt_Inc(var a: HugeInt);                 { a := a + 1 }
procedure HugeInt_Dec(var a: HugeInt);                 { a := a - 1 }

procedure HugeInt_Add(a, b: HugeInt; var R: HugeInt);  { R := a + b }
procedure HugeInt_Sub(a, b: HugeInt; var R: HugeInt);  { R := a - b }
procedure HugeInt_Mul(a, b: HugeInt; var R: HugeInt);  { R := a * b }
procedure HugeInt_Div(a, b: HugeInt; var R: HugeInt);  { R := a div b }
procedure HugeInt_Mod(a, b: HugeInt; var R: HugeInt);  { R := a mod b }

function HugeInt_IsNeg(a: HugeInt): Boolean;
function HugeInt_Zero(a: HugeInt): Boolean;
function HugeInt_Odd(a: HugeInt): Boolean;

function HugeInt_Comp(a, b: HugeInt): Integer;          {-1:a< 0; 1:a>}
procedure HugeInt_Copy(Src: HugeInt; var Dest: HugeInt);{ Dest := Src }

procedure String2HugeInt(AString: string; var a: HugeInt);
procedure Integer2HugeInt(AInteger: Integer; var a: HugeInt);
procedure HugeInt2String(a: HugeInt; var S: string);


implementation

procedure HugeInt_Copy(Src: HugeInt; var Dest: HugeInt);
{ Dest := Src }
begin

Move(Src, Dest, SizeOf(HugeInt));
end;{ HugeInt_Copy }

function HugeInt_IsNeg(a: HugeInt): Boolean;
begin

HugeInt_IsNeg := a[HugeIntMSB] and $80 > 0;
end;{ HugeInt_IsNeg }

function HugeInt_Zero(a: HugeInt): Boolean;
var i: Integer;
begin

HugeInt_Zero := False;
for i := 0 to HugeIntMSB do
if a[i] <> 0 then Exit;
HugeInt_Zero := True;
end;{ HugeInt_Zero }

function HugeInt_Odd(a: HugeInt): Boolean;
begin

HugeInt_Odd := a[0] and 1 > 0;
end;{ HugeInt_Odd }

function HugeInt_HCD(a: HugeInt): Integer;
var i: Integer;
begin

i := HugeIntMSB;
while (i > 0) and (a[i] = 0) do Dec(i);
HugeInt_HCD := i;
end;{ HugeInt_HCD }

procedure HugeInt_SHL(var a: HugeInt; Digits: Integer);
{ Перемещение байтов переменной "Digits" в левую часть,

байты "Digits" будут 'ослабевать' в MSB-части.
LSB-часть заполняется нулями. }
var t: Integer;
b: HugeInt;
begin

if Digits > HugeIntMSB then
FillChar(a, SizeOf(HugeInt), 0)
else if Digits > 0 then
begin
Move(a[0], a[Digits], HugeIntSize-Digits);
FillChar(a[0], Digits, 0);
end;{ else if }
end;{ HugeInt_SHL }

procedure HugeInt_SHR(var a: HugeInt; Digits: Integer);
var t: Integer;
begin

if Digits > HugeIntMSB then
FillChar(a, SizeOf(HugeInt), 0)
else if Digits > 0 then
begin
Move(a[Digits], a[0], HugeIntSize-Digits);
FillChar(a[HugeIntSize-Digits], Digits, 0);
end;{ else if }
end;{ HugeInt_SHR }

procedure HugeInt_Inc(var a: HugeInt);
{ a := a + 1 }
var

i: Integer;
h: Word;
begin

i := 0; h := 1;
repeat
h := h + a[i];
a[i] := Lo(h);
h := Hi(h);
Inc(i);
until (i > HugeIntMSB) or (h = 0);
HugeIntCarry := h > 0;
{$IFOPT R+ }
if HugeIntCarry then RunError(215);
{$ENDIF}
end;{ HugeInt_Inc }

procedure HugeInt_Dec(var a: HugeInt);
{ a := a - 1 }
var Minus_1: HugeInt;
begin

{ самый простой способ }
FillChar(Minus_1, SizeOf(HugeInt), $FF); { -1 }
HugeInt_Add(a, Minus_1, a);
end;{ HugeInt_Dec }

procedure HugeInt_Min(var a: HugeInt);
{ a := -a }
var i: Integer;
begin

for i := 0 to HugeIntMSB do
a[i] := not a[i];
HugeInt_Inc(a);
end;{ HugeInt_Min }

function HugeInt_Comp(a, b: HugeInt): Integer;
{ a = b: ==0; a > b: ==1; a < b: ==-1 }
var

A_IsNeg, B_IsNeg: Boolean;
i:                Integer;
begin

A_IsNeg := HugeInt_IsNeg(a);
B_IsNeg := HugeInt_IsNeg(b);
if A_IsNeg xor B_IsNeg then
if A_IsNeg then HugeInt_Comp := -1
else HugeInt_Comp := 1
else
begin
if A_IsNeg then HugeInt_Min(a);
if B_IsNeg then HugeInt_Min(b);
i := HugeIntMSB;
while (i > 0) and (a[i] = b[i]) do Dec(i);
if A_IsNeg then { оба отрицательные! }
if a[i] > b[i] then HugeInt_Comp := -1
else if a[i] < b[i] then HugeInt_Comp := 1
else HugeInt_Comp := 0
else { оба положительные }
if a[i] > b[i] then HugeInt_Comp := 1
else if a[i] < b[i] then HugeInt_Comp := -1
else HugeInt_Comp := 0;
end;{ else }
end;{ HugeInt_Comp }

procedure HugeInt_Add(a, b: HugeInt; var R: HugeInt);
{ R := a + b }
var

i: Integer;
h: Word;
begin

h := 0;
for i := 0 to HugeIntMSB do
begin
h := h + a[i] + b[i];
R[i] := Lo(h);
h := Hi(h);
end;{ for }
HugeIntCarry := h > 0;
{$IFOPT R+ }
if HugeIntCarry then RunError(215);
{$ENDIF}
end;{ HugeInt_Add }

procedure HugeInt_Sub(a, b: HugeInt; var R: HugeInt);
{ R := a - b }
var

i: Integer;
h: Word;
begin

HugeInt_Min(b);
HugeInt_Add(a, b, R);
end;{ HugeInt_Sub }

procedure HugeInt_Mul(a, b: HugeInt; var R: HugeInt);
{ R := a * b }
var

i, j, k:          Integer;
A_end, B_end:     Integer;
A_IsNeg, B_IsNeg: Boolean;
h:                Word;
begin

A_IsNeg := HugeInt_IsNeg(a);
B_IsNeg := HugeInt_IsNeg(b);
if A_IsNeg then HugeInt_Min(a);
if B_IsNeg then HugeInt_Min(b);
A_End := HugeInt_HCD(a);
B_End := HugeInt_HCD(b);
FillChar(R, SizeOf(R), 0);
HugeIntCarry := False;
for i := 0 to A_end do
begin
h := 0;
for j:= 0 to B_end do
if (i + j) < HugeIntSize then
begin
h := h + R[i+j] + a[i] * b[j];
R[i+j] := Lo(h);
h := Hi(h);
end;{ if }
k := i + B_End + 1;
while (k < HugeIntSize) and (h > 0) do
begin
h := h + R[k];
R[k] := Lo(h);
h := Hi(h);
Inc(k);
end;{ while }
HugeIntCarry := h > 0;
{$IFOPT R+}
if HugeIntCarry then RunError(215);
{$ENDIF}
end;{ for }
{ если все хорошо... }
if A_IsNeg xor B_IsNeg then HugeInt_Min(R);
end;{ HugeInt_Mul }

procedure HugeInt_DivMod(var a: HugeInt; b: HugeInt; var R: HugeInt);
{ R := a div b  a := a mod b }
var

MaxShifts, s, q:  Integer;
d, e:             HugeInt;
A_IsNeg, B_IsNeg: Boolean;
begin

if HugeInt_Zero(b) then
begin
HugeIntDiv0 := True;
Exit;
end{ if }
else HugeIntDiv0 := False;
A_IsNeg := HugeInt_IsNeg(a);
B_IsNeg := HugeInt_IsNeg(b);
if A_IsNeg then HugeInt_Min(a);
if B_IsNeg then HugeInt_Min(b);
if HugeInt_Comp(a, b) < 0 then
{ a<b; нет необходимости деления }
FillChar(R, SizeOf(R), 0)
else
begin
FillChar(R, SizeOf(R), 0);
repeat
Move(b, d, SizeOf(HugeInt));
{ сначала вычисляем количество перемещений (сдвигов) }
MaxShifts := HugeInt_HCD(a) - HugeInt_HCD(b);
s := 0;
while (s <= MaxShifts) and (HugeInt_Comp(a, d) >= 0) do
begin
Inc(s);
HugeInt_SHL(d, 1);
end;{ while }
Dec(s);
{ Создаем новую копию b }
Move(b, d, SizeOf(HugeInt));
{ Перемещаем (сдвигаем) d }
HugeInt_ShL(d, S);
{ Для добавление используем e = -d, это быстрее чем вычитание d }
Move(d, e, SizeOf(HugeInt));
HugeInt_Min(e);
Q := 0;
{ пока a >= d вычисляем a := a+-d и приращиваем Q}
while HugeInt_Comp(a, d) >= 0 do
begin
HugeInt_Add(a, e, a);
Inc(Q);
end;{ while }
{ Упс!, слишком много вычитаний; коррекция }
if HugeInt_IsNeg(a) then
begin
HugeInt_Add(a, d, a);
Dec(Q);
end;{ if }
HugeInt_SHL(R, 1);
R[0] := Q;
until HugeInt_Comp(a, b) < 0;
if A_IsNeg xor B_IsNeg then HugeInt_Min(R);
end;{ else }
end;{ HugeInt_Div }

procedure HugeInt_DivMod100(var a: HugeInt; var R: Integer);
{ 256-тиричное деление - работает только с

положительными числами: R := a mod 100; a:= a div 100; }
var

Q: HugeInt;
S: Integer;
begin

R := 0; FillChar(Q, SizeOf(Q), 0);
S := HugeInt_HCD(a);
repeat
r := 256*R + a[S];
HugeInt_SHL(Q, 1);
Q[0] := R div 100;
R := R mod 100;
Dec(S);
until S < 0;
Move(Q, a, SizeOf(Q));
end;{ HugeInt_DivMod100 }

procedure HugeInt_Div(a, b: HugeInt; var R: HugeInt);
begin

HugeInt_DivMod(a, b, R);
end;{ HugeInt_Div }

procedure HugeInt_Mod(a, b: HugeInt; var R: HugeInt);
begin

HugeInt_DivMod(a, b, R);
Move(a, R, SizeOf(HugeInt));
end;{ HugeInt_Mod }

procedure HugeInt2String(a: HugeInt; var S: string);

function Str100(i: Integer): string;
begin
Str100 := Chr(i div 10 + Ord('0')) + Chr(i mod 10 + Ord('0'));
end;{ Str100 }
var

R:      Integer;
Is_Neg: Boolean;
begin

S := '';
Is_Neg := HugeInt_IsNeg(a);
if Is_Neg then HugeInt_Min(a);
repeat
HugeInt_DivMod100(a, R);
Insert(Str100(R), S, 1);
until HugeInt_Zero(a) or (Length(S) = 254);
while (Length(S) > 1) and (S[1] = '0') do Delete(S, 1, 1);
if Is_Neg then Insert('-', S, 1);
end;{ HugeInt2String }

procedure String_DivMod256(var S: string; var R: Integer);
{ 10(00)-тиричное деление - работает только с

положительными числами: R := S mod 256; S := S div 256 }
var Q: string;
begin

FillChar(Q, SizeOf(Q), 0);
R := 0;
while S <> '' do
begin
R := 10*R + Ord(S[1]) - Ord('0'); Delete(S, 1, 1);
Q := Q + Chr(R div 256 + Ord('0'));
R := R  mod 256;
end;{ while }
while (Q <> '') and (Q[1] = '0') do Delete(Q, 1, 1);
S := Q;
end;{ String_DivMod256 }

procedure String2HugeInt(AString: string; var a: HugeInt);
var

i, h:   Integer;
Is_Neg: Boolean;
begin

if AString = '' then AString := '0';
Is_Neg := AString[1] = '-';
if Is_Neg then Delete(Astring, 1, 1);
i := 0;
while (AString <> '') and (i <= HugeIntMSB) do
begin
String_DivMod256(AString, h);
a[i] := h;
Inc(i);
end;{ while }
if Is_Neg then HugeInt_Min(a);
end;{ String2HugeInt }

procedure Integer2HugeInt(AInteger: Integer; var a: HugeInt);
var Is_Neg: Boolean;
begin

Is_Neg := AInteger < 0;
if Is_Neg then AInteger := -AInteger;
FillChar(a, SizeOf(HugeInt), 0);
Move(AInteger, a, SizeOf(Integer));
if Is_Neg then HugeInt_Min(a);
end;{ Integer2HugeInt }

end.

Последний раз редактировалось abcdef, 12.08.2009 в 11:52.
(Offline)
 
Ответить с цитированием
Старый 23.09.2009, 18:17   #117
DIMMON4IK
Знающий
 
Аватар для DIMMON4IK
 
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений
(для 78 пользователей)
Ответ: The Maze

Есть пару вопросов:
1.Как "подвинуть" спрайт напр. №2 на 1 по Х или Y?
2.Как сделать ещё один или два вида спрайтов (тоесть чтобы были не такие с виду)?

Очень надо!
__________________


(Offline)
 
Ответить с цитированием
Старый 26.09.2009, 19:32   #118
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

летающие шары это двигающиеся спрайты...

я вроде полностью разжевал весь код для создания полноценной игры
(Offline)
 
Ответить с цитированием
Старый 17.10.2009, 15:40   #119
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Хорошо Ответ: The Maze

Сообщение от DIMMON4IK Посмотреть сообщение
Карту плиз!!!
Вот с опозданием, но почти игра.. выкладываю как есть.
Реализовано:
Загрузка карты с файла, расстановка точек старта и перехода.
Незаметная для глаза смена карт, их подгрузку видно только если включить радар.
Сделал 2 карты из планировавшихся 5-ти. Так же хочу сделать редактор карт.
Формат карты:
1я строка: ШиринахВысота
Далее сама карта, пока только 0-9 (т.е. 10 текстур)
"S" - точки старта. "Е" - точки перехода/телепорта/выхода
после карты идут строки с описанием точек старта(откуда пришли на эту карту)
потом любая строка, после которой следуют описания точек перехода(при попадании на точку куда перейти).
в конце файла-карты должен быть хотябы 1 перевод строки (Капризы МП).
Перемещения методом телепорта в пределах одной карты ещё нет.
Чтобы включить радар введите имя "Radar".
Вложения
Тип файла: zip r3d_1.2.0.zip (436.3 Кб, 677 просмотров)
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Cliffe Snake за это полезное сообщение:
baton4ik (25.12.2009), cherepets (18.10.2009), DIMMON4IK (17.10.2009)
Старый 18.10.2009, 23:30   #120
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: The Maze

убойно... исходник боюсь открывать...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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