IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Это все я со своей Змейкой, Просто нужен совет, не более того )
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


слушайте, люди, как можно модифицировать "Змейку", чтобы она подразделялась на уровни, то есть, допустим, если "сьел" точек штук 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.


тьфу, с кодировкой в комментариях проблемы


--------------------
Rise and shine!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Саня

Репутация: -  0  +


пожалуйста, не надо меня игнорировать. Просто нужен совет, догадка, мысль.....я ж не прошу написать программу unsure.gif


--------------------
Rise and shine!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


ты бы код в теги заключал...
еще не поздно исправить ;)

ладно, по теме...
1. могу выложить свою Змейку (писала курсовик в прошлом году. правда, на делфи).
2. кто тебе мешает добавить счетчик съеденных "точек" (по ним можно считать очки, так что переменных больше не станет) и сделать, например, koeff:=count div 20, где count - количество съеденного, koeff - сдвиг змейки.
3. как ты представляешь себе создание уровня? вводится количество препятствий и, координаты левого верхнего угла и длина стороны (препятствие - квадратик)?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Уровень просто сделать записанный в массив и всё. Его уже и редактировать, а потом запускать змейку.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.11.2020 15:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name