Помощь - Поиск - Пользователи - Календарь
Полная версия: Змейка
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Gonz
Это мой первый серьезный проект, так что особо строго не судите.
Говорите ваше мнение, и как можно еще улучшить.
 ! 
выкладывать ехе-шники без исходников запрещено правилами.
приложение удалено.
мисс_граффити

Адель
по моему нормально smile.gif вот только интерфейс сам понимаешь наверное, что не очень..
что добавить: функций, разнообразь игру...
Gonz
Цитата(Адель @ 16.04.2007 22:35) *

по моему нормально smile.gif вот только интерфейс сам понимаешь наверное, что не очень..
что добавить: функций, разнообразь игру...

В том то и проблема, что я не дизайнер, и не могу придумать красивый интерфейс=(
Адель
змеек много, выбирай любой понравившийся. трата времени на украшение имхо бесполезно, лучше развивать саму прорамму
TarasBer
Интерфейс симпатичный, только нерусский.
Неприятно, что меню мерцают. Если перерисовывать только текст, а не всю картинку, то мерцание исчезнет. И ещё: при вводе имени сканкоды воспринимаются как обычные клавиши, что неправильно (например, стрелочки активизируют буквы).
Да, ещё. Я знаю, что достал администрацию форума этой придиркой, но время как измеряется? Просто если делэем, то выходит, что сложность зависит от тактовой частоты, что плохо.

И хотелось бы видеть исходник.
Gonz
Цитата(TarasBer @ 16.04.2007 23:00) *

Интерфейс симпатичный, только нерусский.

Так шрифтов русских нет.
Цитата(TarasBer @ 16.04.2007 23:00) *

Неприятно, что меню мерцают. Если перерисовывать только текст, а не всю картинку, то мерцание исчезнет. И ещё: при вводе имени сканкоды воспринимаются как обычные клавиши, что неправильно (например, стрелочки активизируют буквы).

Испарвлю
Цитата(TarasBer @ 16.04.2007 23:00) *

Да, ещё. Я знаю, что достал администрацию форума этой придиркой, но время как измеряется? Просто если делэем, то выходит, что сложность зависит от тактовой частоты, что плохо.

Нет, не завивисит, для этого сделал специальную паузу.

TarasBer
Цитата(Gonz @ 17.04.2007 7:24) *

Так шрифтов русских нет.


Таблица рекордов
Gonz
Цитата(TarasBer @ 17.04.2007 22:00) *

Спасибо, щас переправлю.
Рыжик
good.gif
Очень даже не плохо!
Только меню бы сделать "помягче" ,а то как то резко получилось.
И еще когда змейка поворачивает,она как бы ломается ,часть уже повернула
а другая еще вперед уходит.
mamont001
Цитата(Рыжик @ 28.04.2007 17:19) *

И еще когда змейка поворачивает,она как бы ломается ,часть уже повернула
а другая еще вперед уходит.

Так єто же класическая змейка!
Если знаеш такую, что не ламается,покажи ,посмотрим.
Рыжик
Да нет!Если сделать ее секции круглыми а не овальными то все окей!
P.S Смотри файл!

Добавлено через 6 мин.
Или так!
Gonz
Цитата(Рыжик @ 28.04.2007 18:19) *

Только меню бы сделать "помягче" ,а то как то резко получилось.
И еще когда змейка поворачивает,она как бы ломается ,часть уже повернула
а другая еще вперед уходит.

Можно сделать отдельные текстурки "поворота", вприницпи это не сложно....
И что ты имеешь ввиду под резким меню?
Гость
Цитата(Gonz @ 1.05.2007 14:03) *

Можно сделать отдельные текстурки "поворота", вприницпи это не сложно....
И что ты имеешь ввиду под резким меню?

Ну в смысле глаза устают.И надписи лучше печатными буквами сделать. smile.gif
Рыжик
Гостем был я!Забыл войти.
-Gonz-
Цитата(Гость @ 2.05.2007 6:34) *

Ну в смысле глаза устают.И надписи лучше печатными буквами сделать. smile.gif

Даже не заню как переделать, чтоб лучше было(
Щас работаю над "тестурами" поворотоа, оказалось не так легко=)
Sam0784
млин у мну слишком быстро бегает. а так ваще супер!!!
Ale}{@nd3R
М
Пользуйся тегами !


слушайте, люди, как можно модифицировать "Змейку", чтобы она подразделялась на уровни, то есть, допустим, если "сьел" точек штук 20, то осуществлялся переход на новый уровень: увеличивалась скорость и создавались препятствия, которых с увеличением уровня становилось бы все больше и больше. Кроме того, как осуществить возможность СОЗДАВАТЬ уровни в самой игре (вот выбрали мы опцию создать уровень, сделали себе препятствия как нравится и запустили его). Сама змейка такая:


Program Snake;
uses crt,graph;
var gd,gm: integer;
x_min, y_min, x_max, y_max, x, y, score, best: word;
size,level: byte;
n, k: word;
way_x, way_y: shortint;
score_str, best_str: string[10];
ch, level_ch: char;
point, exit: boolean;
koor: array[1..400,1..2] of word;
f: text;

procedure Delay(time:longint);
var
ctime,time2:Longint;
begin
ctime:=meml[$40:$006c];
time2:=time div 55+ctime;
while time2>meml[$40:$006c] do;
end;

begin
x_min:=30;
y_min:=45;
x_max:=615;
y_max:=450;
k:=15;
gd:=detect;
initgraph(gd,gm,'');

setfillstyle(6,6);
bar(x_min-15,y_min-15,x_max+15,y_max+15);
setfillstyle(1,1);
bar(x_min,y_min,x_max,y_max);

size:=5;
x:=x_min+size*k;
y:=y_max div 2;
setfillstyle(9,14);
bar(x-size*k,y,x,y+k);
way_x:=1;
way_y:=0;
for n:=1 to size do
begin
koor[n,1]:=x-n*k+k;
koor[n,2]:=y
end;
point:=false;

settextstyle(2,0,6); { ’ҐЄбв ­ ўҐpег }
setcolor(15);
outtextxy(50, 7, 'ЋзЄЁ:');
outtextxy(450,7, 'ђҐЄ®pg:');
setcolor(9);
outtextxy(110, 7, '0');
setcolor(4);
outtextxy(180, 7, '‚ўҐgЁвҐ гp®ўҐ­м (1-9):');


assign(f,'record.snk'); { ЋЎp Ў®вЄ д ©« б pҐЄ®p¤®¬ }
reset(f);
repeat
read(f,ch);
best_str:=best_str+ch
until eof(f);
close(f);
setcolor(2);
outtextxy(530,7,best_str);

repeat
level_ch:=readkey;
if level_ch=#27 then halt
until (level_ch>=#49) and (level_ch<=#57);
val(level_ch,level,n);
setfillstyle(0,0);
bar(170,7,400,25);
setcolor(15);
outtextxy(235,7,'”p®ўҐ­м:');
setcolor(3);
outtextxy(315,7,level_ch);

repeat
if keypressed then ch:=readkey;
case ch of
#72: if way_y=0 then
begin
way_x:=0;
way_y:=-1
end;
#75: if way_x=0 then
begin
way_x:=-1;
way_y:=0
end;
#77: if way_x=0 then
begin
way_x:=1;
way_y:=0
end;
#80: if way_y=0 then
begin
way_x:=0;
way_y:=1
end;
#27: break
end;

setfillstyle(1,1);
bar(koor[size,1]-k, koor[size,2], koor[size,1], koor[size,2]+k);

for n:=size downto 2 do { ЏҐpҐбзҐв Є®®p¤Ё­ в }
begin
koor[n,1]:=koor[n-1,1];
koor[n,2]:=koor[n-1,2]
end;
koor[1,1]:=koor[1,1]+way_x*k;
koor[1,2]:=koor[1,2]+way_y*k;

if (koor[1,1]>x_max) or (koor[1,2]=y_max) or (koor[1,1]=x_min) or
(koor[1,2]<y_min) then { Џ®Ї ¤ ­ЁҐ ў б⥭г }
begin
sound(100);
delay(100);
nosound;
break
end;

if point=false then { ђЁб®ў ­ЁҐ в®зҐЄ }
begin
repeat
randomize;
x:=(random((x_max-x_min) div k)+1)*k+x_min;
y:=(random((y_max-y_min) div k)+1)*k+y_min;
point:=true;
for n:=1 to size do
if (x=koor[n,1]) and (y=koor[n,2]+k) then point:=false
until point;
setfillstyle(9,4);
setcolor(2);
fillellipse(x-7,y-7,6,6);
setcolor(0);
line(0,0,0,15)
end;

if (x=koor[1,1]) and (y=koor[1,2]+k) then { ‘ꥤ ­ЁҐ в®зҐЄ }
begin
sound(900);
inc(size);

setfillstyle(0,0);
bar(105,1,200,25);
inc(score,level);
str(score,score_str);
setcolor(9);
outtextxy(110,7,score_str);

point:=false
end;

for n:=2 to size do { ‘ ¬®ЇҐpҐбҐзҐ­ЁҐ }
if (koor[1,1]=koor[n,1]) and (koor[1,2]=koor[n,2]) then
begin
sound(150);
delay(100);
nosound;
exit:=true;
break
end;


setfillstyle(9,14);
bar(koor[1,1]-k, koor[1,2], koor[1,1], koor[1,2]+k);

delay(181-9*level);
if point=false then nosound;
if keypressed then ch:=readkey

until (ch=#27) or exit;

setfillstyle(0,0);
bar(170,7,400,25);
val(best_str,best,n);
setcolor(4);
if score<=best then outtextxy(220, 7, '‚л Їp®ЁЈp «Ё!')
else
begin
outtextxy(220, 7, 'H®ўл© pҐЄ®pg!');
rewrite(f);
write(f,score_str);
close(f)
end;
repeat
ch:=readkey
until (ch>#0) and (ch<>#72) and (ch<>#75) and (ch<>#77) and (ch<>#80);
closegraph;
readln;
end.


тьфу, с кодировкой в комментариях проблемы
Gonz
Добавил "поворотные" текстурки, перевел на русский( правдо по-моему не все:( ) и исправил пару глюков
только сегодня дошли руки сделать хоть что-то)
ну как?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.