Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2012, 14:29   #1
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
Восклицание Нужно сделать движение чисел кнопоками (w,a,s,d) игра пятнашки

Код:
Program fift;
uses crt,graph;
const
n=4;
type mas=array[1..n,1..n] of integer;

VAR gm,gd,ch,vx,vy,l:integer;
a:mas;

procedure  zastavka;
 begin
 end;
procedure kvadrat(x,y,c,k:integer) ;
var i,j:integer;
begin
for i:=0 to k-1 do
for j:=0 to k-1 do
rectangle(x+i*c,y+j*c,x+i*c+c,y+j*c+c);
end;



procedure massiv;
var
i,j,k: integer;
s: set of byte;
begin
s:=[];
randomize;
for i:=1 to n do   begin
for j:=1 to n do begin
repeat
k:=random(16)+1;
until not (k in s );
a[i,j]:=k; s:=s+[k];

end ;

end;
end;

procedure odin (x,y,h:integer);
var i,j,d:integer;
ds:string;
begin
for i:=0 to 4-1 do
for j:=0 to 4-1   do    begin
d:=a[i+1,j+1];
str(d,ds);
if d<>16 then
outtextXY (x+h div 2+h*j,y+h div 2+h*i, ds);
end;

end;
BEGIN
gd:=detect;
Initgraph(gm,gd,'C:\TP7.1\TP\BGI');
vx:=180;
vy:=100;
l:=60;
ch:=4;
massiv;
kvadrat(vx,vy,l,ch);
odin(vx,vy,l) ;
outtext('exit "enter"');
readln;
end.
Nikitos_ вне форума Ответить с цитированием
Старый 31.05.2012, 20:49   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Так что у Вас не получается?
s-andriano вне форума Ответить с цитированием
Старый 01.06.2012, 17:12   #3
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
По умолчанию

всё не получается, я просто вообще не имею представление как это сделать((
Nikitos_ вне форума Ответить с цитированием
Старый 01.06.2012, 21:12   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
roz = record // PlaceOfZero 
         x : Integer;
         y : Integer;
end;
....

begin
             ............
       
             poz.x := 4; // в начале игры "пустая" клетка находится в ячейке 4 столбка 4 строки
             poz.y := 4; 
       
             ch := ReadKey; // ch : Char и модуль не забудь
     
             if Ord (ch) = 8592 then begin 
                           a[poz.x, poz.y] :=  a[poz.x, poz.y - 1]; // с 2-ух мерными почти не знаком могу ошибаться в порядке переменных
                           Dec(poz.y);
             end;
             // ну и дальше с листочком делаешь для других стрелок (здесь для стрелки вверх)
             // если что ASCII код стрелок брал отсюда
Poma][a вне форума Ответить с цитированием
Старый 01.06.2012, 22:52   #5
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
По умолчанию

вот смотрите я кое что сделал только почемуто после движения остаются следы и двигается только на одну клетку в каждом направлении
Код:
Program fift;
uses crt,graph;
const
n=4;
type mas=array[1..n,1..n] of integer;

VAR gm,gd,ch,vx,vy,l,i,j,n1,b:integer;
a:mas;
o:char;
procedure  zastavka;
 begin
 end;
procedure kvadrat(x,y,c,k:integer) ;
var i,j:integer;
begin
for i:=0 to k-1 do
for j:=0 to k-1 do
rectangle(x+i*c,y+j*c,x+i*c+c,y+j*c+c);

end;



procedure massiv;
var
i,j,k: integer;
s: set of byte;
begin
s:=[];

randomize;
for i:=1 to n do   begin
for j:=1 to n do begin
repeat
k:=random(16)+1;
until not (k in s );
a[i,j]:=k; s:=s+[k];

end ;
end;
end;

procedure odin (x,y,h:integer);
var i,j,d:integer;
ds:string;
begin
for i:=0 to 4-1 do
for j:=0 to 4-1   do    begin
d:=a[i+1,j+1];
str(d,ds);

if d<>16 then
outtextXY (x+h div 2+h*j,y+h div 2+h*i, ds);
end;
end;
procedure pusto(i,j:integer);
begin

for i:=1 to n do
for j:=1 to n do
if a[i,j]=16 then
floodfill(vx+n,vy+n,15);

end;
procedure kvadrat2(i,j,h,j1:integer);
begin
j1:=red;
setcolor(j1);
rectangle(i+2,j+2,i+h-2,j+h-2);
end;
procedure dvig(i,j,h,j1:integer);

begin
if keypressed then
begin
o:=readkey;
end;

if o=#119 then
begin
delay(100);
kvadrat2(i,j,h,0);
j:=j-h;
kvadrat2(i,j,h,j1);
end;


if o=#115 then
begin
delay(100);
kvadrat2(i,j,h,0);
j:=j+h;
kvadrat2(i,j,h,j1);
end;

if o=#100 then
begin
delay(100);
kvadrat2(i,j,h,0);
i:=i+h;
kvadrat2(i,j,h,j1);
end;

if o=#97 then
begin
delay(100);
kvadrat2(i,j,h,0);
i:=i-h;
kvadrat2(i,j,h,j1);

end;

if o=#27 then exit;
end;
BEGIN
gd:=detect;
Initgraph(gm,gd,'C:\TP7.1\TP\BGI');
vx:=250;
vy:=200;
l:=60;
ch:=4;
n1:=red;
kvadrat2(vx,vy,l,n1);
setcolor(15);
massiv;
kvadrat(vx,vy,l,ch);

odin(vx,vy,l) ;


outtext('exit "enter"');

repeat;
dvig(vx,vy,l,n1);
until o=#27;

end.
Nikitos_ вне форума Ответить с цитированием
Старый 01.06.2012, 23:23   #6
Nikitos_
Пользователь
 
Регистрация: 30.05.2012
Сообщений: 32
По умолчанию

а можешь вот это вставить в мою прогу а то я чо то не понял как это сделать
Код:
roz = record // PlaceOfZero 
         x : Integer;
         y : Integer;
end;
....

begin
             ............
       
             poz.x := 4; // в начале игры "пустая" клетка находится в ячейке 4 столбка 4 строки
             poz.y := 4; 
       
             ch := ReadKey; // ch : Char и модуль не забудь
     
             if Ord (ch) = 8592 then begin 
                           a[poz.x, poz.y] :=  a[poz.x, poz.y - 1]; // с 2-ух мерными почти не знаком могу ошибаться в порядке переменных
                           Dec(poz.y);
             end;
             // ну и дальше с листочком делаешь для других стрелок (здесь для стрелки вверх)
             // если что ASCII код стрелок брал отсюда
Nikitos_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игра пятнашки Vovan4uk Паскаль, Turbo Pascal, PascalABC.NET 1 28.03.2012 09:35
игра Пятнашки Lapo4ka Помощь студентам 0 01.05.2011 23:14
игра "Пятнашки" на Visual C++ с использованием OpenGL Mr.Happy Фриланс 3 16.12.2009 16:19
Игра пятнашки... Мамука Общие вопросы .NET 0 03.11.2009 23:25
Delphi игра пятнашки rumf Помощь студентам 14 31.05.2008 00:56