Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/50: Рейтинг темы: голосов - 50, средняя оценка - 4.96
6 / 6 / 0
Регистрация: 17.11.2014
Сообщений: 19
1

Готовая игра 2048

17.12.2014, 10:07. Просмотров 9612. Ответов 10
Метки нет (Все метки)


Ну вот и сделал я свою игру. В моей игре чуть другое условие в отличии от игры представленной девятнадцатилетним итальянским программистом Габриэле Чирулли, его игра была написана на языке JavaScript.
Правила:
  1. Передвигайте плитки с помощью стрелок.
  2. Если две одинаковых по значению плитки столкнутся, то они сольются в одну.
  3. При сдвижение плитка занимает как можно самую дальнюю и свободную ячейку.
  4. Цель игры заключается в том, чтобы собрать плитку с числом 2048.
  5. Если плитки не изменили своё положение после нажатия на какую-либо клавишу управления, то новая плитка всё равно появится.
  6. 6. Если нет ходов, то вы проиграли.
  7. 7. После каждого хода появляется новая плитка (90%-2,10%-4).
Код игры:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
uses wingraph,wincrt;
type mas=array[1..4,1..4] of integer;
var ch:char;
a:mas;
g d,gm,x,x2,y,i,j,xzas,yzas,dxzas,dyzas:integer;
//====================Переменные для картинок
=============
p2048,menu,kmenu,helpkar,game12,proigral,win:pointer;
//================Функция которая загружает
картинки=========
function loader(filename:string):pointer;
var sz:longint;
p:pointer;
f:file;
begin
assign(f,filename);
reset(f,1);
sz:=filesize(f);
getmem(p,sz);
blockread(f,p^,sz);
close(f);
loader:=p;
end;
//================Управление курсором
=====================
procedure upr (var ch:char;var x,y:integer);
begin
ch:=readkey;
putimage(x,y,kmenu^,xorput);
if ch=#0 then ch:=readkey;
case ch of
#72: if y>99 then y:=y-220;
#80: if y<550 then y:=y+220;
end;
if y>545 then y:=100;
if y<100 then y:=540;
putimage(x,y,kmenu^,xorput);
end;
///==============Спавн случайной плитки на
поле =================
procedure random4ik(sran:string;var a:mas);
var start11,start2,r1:integer;
bb:boolean;
begin
bb:=false;
for i:=1 to 4 do
for j:=1 to 4 do
if a[i,j] = 0 then bb:=true;
if (bb = true) then
begin
repeat
start11:=random(4)+1;
start2:=random(4)+1;
until a[start11,start2]=0;
r1:=random(100)+1;3
case r1 of
1..89: a[start11,start2]:=2;
90..100:a[start11,start2]:=4;
end;
settextstyle(0,1,5);
str(a[start11,start2],sran); outtextxy(start2*100,start11*100,sran);
end;
end;
//===========Есть ли пустые клетки на
поле====================
function proverka(a:mas): boolean;
var i,j,k,z:integer;
begin
proverka:=true;
for i:=1 to 4 do
for j:=1 to 4 do
if (a[i,j] = 0) then proverka:=false else
end;
//====================Управление
плитками====================
procedure uprav (var ch:char; var x,x2,y,summa:integer);
var k,i,l,start11,start2,y2,x3:integer;
b:boolean;
s1,schet,sran:string;
begin
ch:=readkey;
if ch=#0 then ch:=readkey;
case ch of
#72: begin
//======================================ВВЕРХ
for j:=1 to 4 do
begin
for i:=1 to 4 do
begin
for k:=i+1 to 4 do
begin
if (a[k,j] <> 0) then
begin
if (a[i,j] = 0) then
begin
a[i,j]:= a[k,j];
a[k,j]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(j*100+4,k*100+4,j*100+90,k*100+90);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
if (a[i,j] = a[k,j]) then
begin
a[i,j]:=a[i,j]+a[k,j];
a[k,j]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(j*100+4,k*100+4,j*100+90,k*100+90);
summa:=summa+a[i,j];
str(summa,schet);
bar(700,400,1000,480);
outtextxy(700,400,schet);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
break;
end;
end;
end;
end;
//а -¤®¬
if proverka(a)=false then
begin
delay(200);
random4ik(sran,a);
end;
end;
#80: begin
//============================================ВН
ИЗ
for j:=1 to 4 do
begin
for i:=4 downto 1 do
begin
for k:=i-1 downto 1 do
begin
if (a[k,j] <> 0) then
begin
if (a[i,j] = 0) then
begin
a[i,j]:= a[k,j];
a[k,j]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(j*100+4,k*100+4,j*100+90,k*100+90);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
if (a[i,j] = a[k,j]) then
begin
a[i,j]:=a[i,j]+a[k,j];
a[k,j]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(j*100+4,k*100+4,j*100+90,k*100+90);
summa:=summa+a[i,j];
str(summa,schet);
bar(700,400,1000,480);
outtextxy(700,400,schet);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
break;
end;
end;
end;
end;
//а -¤®¬
if proverka(a)=false then
begin
delay(100);
random4ik(sran,a);
end;
end;
#77: begin
//=========================================ВПРАВ
О
for i:=1 to 4 do
begin
for j:=4 downto 1 do
begin
for k:=j-1 downto 1 do
begin
if (a[i,k] <> 0) then
begin
if (a[i,j] = 0) then
begin
a[i,j]:= a[i,k];
a[i,k]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(k*100+4,i*100+4,k*100+90,i*100+90);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
if (a[i,j] = a[i,k]) then
begin
a[i,j]:=a[i,j]+a[i,k];
a[i,k]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(k*100+4,i*100+4,k*100+90,i*100+90);
summa:=summa+a[i,j];
str(summa,schet);
bar(700,400,1000,480);
outtextxy(700,400,schet);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end4
else
break;
end;
end;
end;
end;
if proverka(a)=false then
begin
delay(100);
random4ik(sran,a);
end;
end;
#75: begin
//========================================ВЛЕВО
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
for k:=j+1 to 4 do
begin
if (a[i,k] <> 0) then
begin
if (a[i,j] = 0) then
begin
a[i,j]:= a[i,k];
a[i,k]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(k*100+4,i*100+4,k*100+90,i*100+90);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
if (a[i,j] = a[i,k]) then
begin
a[i,j]:=a[i,j]+a[i,k];
a[i,k]:=0;
bar(j*100+4,i*100+4,j*100+90,i*100+90);
bar(k*100+4,i*100+4,k*100+90,i*100+90);
summa:=summa+a[i,j];
str(summa,schet);
bar(700,400,1000,480);
outtextxy(700,400,schet);
str(a[i,j],s1);
outtextxy(j*100,i*100,s1);
end
else
break;
end;
end;
end;
end;
if proverka(a)=false then
begin
delay(100);
random4ik(sran,a);
end;
end;
end;
end;
//================Победа=========================
==
procedure gg(a:mas);
var
i,j:integer;
begin
for i:=1 to 4 do
for j:=1 to 4 do
if a[i,j] = 2048 then
begin
cleardevice;
putimage(0,0,win^,xorput);
end;
end;
//==================Процедура
заставки====================
procedure zastavka(var xzas,yzas,dxzas,dyzas:integer);
begin
putimage(xzas,yzas,p2048^,xorput);
xzas:=xzas+dxzas;
yzas:=yzas+dyzas;
if (xzas>getmaxx-100) then dxzas:=-dxzas;
if (xzas<0) then dxzas:=-dxzas;
putimage(xzas,yzas,p2048^,xorput);
if (yzas>getmaxy-100) then dyzas:=-dyzas;
if (yzas<0) then dyzas:=-dyzas;
settextstyle(1,1,1);
outtextxy(0,getmaxy-20,'Game created: Vyacheslav Agibalov');
delay(30);
end;
//===================Процедура
игры=========================
procedure game;
var x1,y1,start11,start12,start2,start22,summa:integer;
s,s1:string;
begin
cleardevice;
start11:=0;
start12:=0;
start2:=0;
summa:=0;
for i:=1 to 4 do
for j:=1 to 4 do a[i,j]:=0;
//=====================Отрисовка игрового
поля============
setfillstyle(1,red);
putimage(0,0,game12^,xorput);
bar(700,400,1000,480);
settextstyle(0,1,5);
outtextxy(700,400,'0');
//===============================================
=========
start11:=random(4)+1;
start2:=random(4)+1 ;
a[start11,start2]:=2;
repeat
start12:=random(4)+1;
start22:=random(4)+1;
until a[start12,start2]=0;
a[start12,start22]:=2;
settextstyle(0,1,5);
str(a[start11,start2],s);
str(a[start12,start22],s1);
outtextxy(start2*100,start11*100,s);
outtextxy(start22*100,start12*100,s1);
repeat
uprav(ch,x,x2,y,summa);
gg(a);
until (ch=#27)or(proverka(a));
if proverka(a) then begin
delay(2000);
cleardevice;
putimage(0,0,proigral^,xorput);
delay(2000);
end;
end;
//======================HELP====================
===========
procedure help;
begin
cleardevice;
putimage(0,0,helpkar^,xorput);
readkey;
end;
//==================ГЛАВНАЯ
ПРОГРАММА=================
begin
gd:=detect;
initgraph(gd,gm ,'');
randomize;
//=================Загрузка
картинок=========================
menu:=loader('2048/menu2.bmp');
kmenu:=loader('2048/kursor.bmp');
helpkar:=loader('2048/help1.bmp');5
p2048:=loader('2048/2048.bmp');
game12:=loader('2048/game12.bmp');
proigral:=loader('2048/pr5.bmp');
win:=loader('2048/win.bmp');
//=================Начальные значения
переменных==============
xzas:=random(getmaxx div 2);
yzas:=random(getmaxy div 2);
x2:=200;
dxzas:=random(10)+20;
dyzas:=random(10)+20;
//==================Заставка======================
=========== putimage(xzas,yzas,p2048^,xorput);
repeat
zastavka(xzas,yzas,dxzas,dyzas);
until keypressed;
readkey;
//==================Меню========================
===========
repeat
x:=400;
y:=100;
cleardevice;
putimage(0,0,menu^,xorput);
putimage(x,y,kmenu^,xorput);
repeat
upr(ch,x,y);
until ch=#13;
case y of
100:game;
320:help;
end;
until y=540;
end.
Скриншоты игры
Готовая игра 2048

Готовая игра 2048

Файлы
izobr.7z - картинки для запуска.
Mygame.7z - архив с EXE файлами (просто поиграть).
5
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2014, 10:07
Ответы с готовыми решениями:

Игра 2048
Здравствуйте. Решил написать игру 2048 на Pascal'е. Вот есть меню, поле нарисовал, рандомное...

Игра 2048
Всем Здравия! На досуге решил написать игру: &quot;2048&quot;, для тех кто не знаком, вот ссылка на...

Игра 2048
Пытаюсъ написать консольный вариант игры 2048 начал с команды вверх однако по неизвестной мне...

Игра 2048
Игру написал, но осталась проблема. Начальное состояние игры появляется только после клика по...

10
Эксперт Pascal/Delphi
6548 / 4408 / 4711
Регистрация: 05.06.2014
Сообщений: 21,664
05.01.2015, 21:56 2
Спасибо вам за труд. Я не любитель подобных игр, поэтому просто промолчу.
0
3020 / 1908 / 1647
Регистрация: 30.04.2011
Сообщений: 3,054
06.01.2015, 12:19 3
slav4ik51493, кнопка "Вверх" не сдвигает числа.
1
6 / 6 / 0
Регистрация: 17.11.2014
Сообщений: 19
10.01.2015, 15:45  [ТС] 4
Извините, выложил ту версию где не работала кнопку, сейчас изменю код :-)

Добавлено через 5 часов 16 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
{Выполнил: Вячеслав Агибалов.
Высший колледж информатики (ВКИ НГУ)
1 курс.
Группа 403Б2.
Вводный проект.
     ____              _____
    /    \            /     \       |    |        /----\
         |           /       \      |    |        |    |
         |           |       |      |____|        |____|
         /           |       |           |        |    |
        /            \       /           |        |    |
      /_____          \_____/            |        |____|  }
uses wingraph,wincrt;
type mas=array[1..4,1..4] of integer;
var ch:char;
a:mas;
gd,gm,xkursor,ykursor,i,j,xzas,yzas,dxzas,dyzas,b,c:integer;
//====================Переменные для картинок=============
p2048,menu,kmenu,helpkar,game12,proigral,win:pointer;
//================ФУНКЦИЯ КОТОРАЯ ЗАГРУЖАЕТ РИСУНКИ=======
function loader(filename:string):pointer;
 var sz:longint;
 p:pointer;
 f:file;
 begin
  assign(f,filename);
  reset(f,1);
  sz:=filesize(f);
  getmem(p,sz);
  blockread(f,p^,sz);
  close(f);
  loader:=p;
 end;
 
 //================УПРАВЛЕНИЕ КУРСОРА=====================
 procedure upr (var ch:char;var xkursor,y:integer);
  begin
     ch:=readkey;
     putimage(xkursor,y,kmenu^,xorput);
   if ch=#0 then ch:=readkey;
   case ch of
    #72: if y>99 then y:=y-220;
    #80: if y<550 then y:=y+220;
    end;
    if y>545 then y:=100;
    if y<100 then y:=540;
    putimage(xkursor,y,kmenu^,xorput);
  end;
///==============Рандом плитки после хода=================
procedure random4ik(sran:string;var a:mas);
var start11,start2,r1:integer;
bb:boolean;
begin
bb:=false;
for i:=1 to 4 do
 for j:=1 to 4 do
  if a[i,j] = 0 then bb:=true;
   if (bb = true) then
   begin
 repeat
  start11:=random(4)+1; //рандомим плитку
  start2:=random(4)+1;
 until a[start11,start2]=0;
 r1:=random(100)+1;
 case  r1 of
  1..89: a[start11,start2]:=2;
  90..100:a[start11,start2]:=4;
 end;
 settextstyle(0,1,5);
 str(a[start11,start2],sran); //перевод значения плитки
 outtextxy(start2*100,start11*100,sran); //отрисовка плитки
 end;
end;
//===========функция проверки=============================
function proverka(a:mas): boolean;
var i,j,k,z:integer;
begin
 proverka:=true;
 for i:=1 to 4 do
  for j:=1 to 4 do
    if (a[i,j] = 0)  then proverka:=false else
    for k:=2 to 3 do
     for z:= 2 to 3 do
      if (a[k,z] = a[k+1,z]) or (a[k,z] = a[k-1,z]) or (a[k,z] = a[k,z-1]) or
      (a[k,z] = a[k,z+1]) then
      proverka:=false
       else if ((a[1,j] = a[2,j]) or (a[2,j] = a[3,j]) or
       (a[3,j] = a[4,j])) or ((a[i,1] = a[i,2]) or (a[i,2] = a[i,3]) or
       (a[i,3] = a[i,4])) then proverka:=false;
 
end;
//====================Управление в игре====================
procedure uprav (var ch:char; var summa:integer);
var k:integer;
b:boolean;
s1,schet,sran:string;
begin
  ch:=readkey;
  if ch=#0 then ch:=readkey;
  case ch of
   #72: begin
//======================================Вверх
    for j:=1 to 4 do
     begin
       for i:=1 to 4 do
        begin
          for k:=i+1 to 4 do
           begin
             if (a[k,j] <> 0) then
              begin
                if (a[i,j] = 0) then
                  begin
                   a[i,j]:= a[k,j];
                   a[k,j]:=0;
                   bar(j*100+4,i*100+4,j*100+90,i*100+90);
                   bar(j*100+4,k*100+4,j*100+90,k*100+90);
                   str(a[i,j],s1);
                   outtextxy(j*100,i*100,s1);
                  end
                 else
                  if (a[i,j] = a[k,j]) then
                   begin
                    a[i,j]:=a[i,j]+a[k,j];
                    a[k,j]:=0;
                    bar(j*100+4,i*100+4,j*100+90,i*100+90);
                    bar(j*100+4,k*100+4,j*100+90,k*100+90);
                    {+ к счету}
                    summa:=summa+a[i,j];
                    str(summa,schet);
                    bar(700,400,1000,480);
                    outtextxy(700,400,schet);
                    str(a[i,j],s1);
                    outtextxy(j*100,i*100,s1);
                   end
                   else
                   break;
                  end;
                 end;
                end;
              end;
            //рандом
             if proverka(a)=false then
                       begin
                        delay(200);
                        random4ik(sran,a);
                       end;
         end;
     #80: begin
//============================================Вниз
    for j:=1 to 4 do
     begin
       for i:=4 downto 1 do
        begin
          for k:=i-1 downto 1 do
           begin
            if (a[k,j] <> 0) then
              begin
                if (a[i,j] = 0) then
                  begin
                   a[i,j]:= a[k,j];
                   a[k,j]:=0;
                   bar(j*100+4,i*100+4,j*100+90,i*100+90);
                   bar(j*100+4,k*100+4,j*100+90,k*100+90);
                   str(a[i,j],s1);
                   outtextxy(j*100,i*100,s1);
                  end
                 else
                  if (a[i,j] = a[k,j]) then
                   begin
                    a[i,j]:=a[i,j]+a[k,j];
                    a[k,j]:=0;
                    bar(j*100+4,i*100+4,j*100+90,i*100+90);
                    bar(j*100+4,k*100+4,j*100+90,k*100+90);
                    {+ к счету}
                    summa:=summa+a[i,j];
                    str(summa,schet);
                    bar(700,400,1000,480);
                    outtextxy(700,400,schet);
                    str(a[i,j],s1);
                    outtextxy(j*100,i*100,s1);
                   end
                   else
                   break;
                  end;
                 end;
                end;
              end;
            //рандом
            if proverka(a)=false then
                   begin
                    delay(100);
                    random4ik(sran,a);
                   end;
           end;
     #77: begin
//=========================================Вправо
    for i:=1 to 4 do
     begin
       for j:=4 downto 1 do
        begin
          for k:=j-1 downto 1 do
           begin
            if (a[i,k] <> 0) then
              begin
                 if (a[i,j] = 0) then
                  begin
                   a[i,j]:= a[i,k];
                   a[i,k]:=0;
                   bar(j*100+4,i*100+4,j*100+90,i*100+90);
                   bar(k*100+4,i*100+4,k*100+90,i*100+90);
                   str(a[i,j],s1);
                   outtextxy(j*100,i*100,s1);
                  end
                 else
                  if (a[i,j] = a[i,k]) then
                   begin
                    a[i,j]:=a[i,j]+a[i,k];
                    a[i,k]:=0;
                    bar(j*100+4,i*100+4,j*100+90,i*100+90);
                    bar(k*100+4,i*100+4,k*100+90,i*100+90);
                    {+ к счету}
                    summa:=summa+a[i,j];
                    str(summa,schet);
                    bar(700,400,1000,480);
                    outtextxy(700,400,schet);
                    str(a[i,j],s1);
                    outtextxy(j*100,i*100,s1);
                   end
                  else
                  break;
                  end;
                 end;
                end;
              end;
            //рандом
            if proverka(a)=false then
                   begin
                    delay(100);
                    random4ik(sran,a);
                   end;
           end;
  #75: begin
//========================================Влево
    for i:=1 to 4 do
     begin
       for j:=1 to 4 do
        begin
          for k:=j+1 to 4 do
           begin
            if (a[i,k] <> 0) then
              begin
                 if (a[i,j] = 0) then
                  begin
                   a[i,j]:= a[i,k];
                   a[i,k]:=0;
                   bar(j*100+4,i*100+4,j*100+90,i*100+90);
                   bar(k*100+4,i*100+4,k*100+90,i*100+90);
                   str(a[i,j],s1);
                   outtextxy(j*100,i*100,s1);
                  end
                 else
                  if (a[i,j] = a[i,k]) then
                   begin
                    a[i,j]:=a[i,j]+a[i,k];
                    a[i,k]:=0;
                    bar(j*100+4,i*100+4,j*100+90,i*100+90);
                    bar(k*100+4,i*100+4,k*100+90,i*100+90);
                    {+ к счету}
                    summa:=summa+a[i,j];
                    str(summa,schet);
                    bar(700,400,1000,480);
                    outtextxy(700,400,schet);
                    str(a[i,j],s1);
                    outtextxy(j*100,i*100,s1);
                   end
                   else
                   break;
                  end;
                 end;
                end;
              end;
            //рандом
           if proverka(a)=false then
             begin
              delay(100);
              random4ik(sran,a);
             end;
        end;
   end;
end;
//================Процедура выигрыша игры===========================
procedure gg(a:mas);
var
i,j:integer;
begin
 for i:=1 to 4 do
  for j:=1 to 4 do
   if a[i,j] = 2048 then
   begin
   cleardevice;
   putimage(0,0,win^,xorput);
   end;
end;
//==================ПРОЦЕДУРА ЗАСТАВКИ===========================
procedure zastavka(var xzas,yzas,dxzas,dyzas:integer);
 begin
   putimage(xzas,yzas,p2048^,xorput);//отрисовка
   xzas:=xzas+dxzas;
   yzas:=yzas+dyzas;
   if (xzas>getmaxx-100) then dxzas:=-dxzas;
   if (xzas<0) then dxzas:=-dxzas;
   putimage(xzas,yzas,p2048^,xorput);//зарисовка
   if (yzas>getmaxy-100) then dyzas:=-dyzas;
   if (yzas<0) then dyzas:=-dyzas;
   settextstyle(1,1,1);
   outtextxy(0,getmaxy-20,'Game created: Vyacheslav Agibalov');
   delay(30);
  end;
//===================ПРОЦЕДУРА ИГРЫ===============================
 procedure game;
 var x1,y1,start11,start12,start2,start22,summa:integer;
     s,s1:string;
  begin
      cleardevice;
        start11:=0;
        start12:=0;
        start2:=0;
        summa:=0;
        for i:=1 to 4 do
         for j:=1 to 4 do a[i,j]:=0;
        //=====================Отрисовка игрового поля============
        setfillstyle(1,red);
        putimage(0,0,game12^,xorput);
        //========================================================
        start11:=random(4)+1; //рандомим первую плитку
        start2:=random(4)+1 ;
        a[start11,start2]:=2; //Задаём начальное значение первой плитке
        repeat
        start12:=random(4)+1; //рандомим вторую плитку
        start22:=random(4)+1;
        until a[start12,start2]=0;
        a[start12,start22]:=2; // задаем начальное значение второй плитке
        settextstyle(0,1,5);
        str(a[start11,start2],s); //перевод значения первой плитки
        str(a[start12,start22],s1); // перевод значения второй плитки
        outtextxy(start2*100,start11*100,s); //отрисовка пер. плитки
        outtextxy(start22*100,start12*100,s1); //отрисовка второй плитки
         repeat
            uprav(ch,summa);
            gg(a);
         until (ch=#27)or(proverka(a));
         if proverka(a) then begin
          delay(2000);
          cleardevice;
          putimage(0,0,proigral^,xorput);
          delay(2000);
        end;
  end;
//======================HELP======================================
procedure help;
 begin
     cleardevice;
     putimage(0,0,helpkar^,xorput);
     readkey;
 end;
//========================Основное тело программы=================
begin
 gd:=detect;
 b:=9;
 c:=11;
 initgraph(b,c,'');
 randomize;
//=================ЗАГРУЗКА РИСУНКОВ==============================
 menu:=loader('2048/menu2.bmp');
 kmenu:=loader('2048/kursor.bmp');
 helpkar:=loader('2048/help1.bmp');
 p2048:=loader('2048/2048.bmp');
 game12:=loader('2048/game12.bmp');
 proigral:=loader('2048/pr5.bmp');
 win:=loader('2048/win.bmp');
 //=================ЗНАЧЕНИЕ ПЕРЕМЕННЫХ===========================
 xzas:=random(getmaxx div 2);
 yzas:=random(getmaxy div 2);
 dxzas:=random(10)+20;
 dyzas:=random(10)+20;
//==================Заставка======================================
 putimage(xzas,yzas,p2048^,xorput);
 repeat
  zastavka(xzas,yzas,dxzas,dyzas);
 until keypressed;
 readkey;
//==================Меню==========================================
 repeat
  xkursor:=400;
  ykursor:=100;
    cleardevice;
     putimage(0,0,menu^,xorput);
     putimage(xkursor,ykursor,kmenu^,xorput);
      repeat
        upr(ch,xkursor,ykursor);
      until ch=#13;
       case ykursor of
         100:game;
         320:help;
   end;
 until ykursor=540;
end.
0
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 6
31.01.2015, 19:15 5
slav4ik51493, Ты не мог бы целиком скинуть игру а то очень нужно
0
Модератор
8397 / 4151 / 2871
Регистрация: 17.08.2012
Сообщений: 13,231
01.02.2015, 01:42 6
Euro_rzn, так всё вроде целиком и скинуто... Даже уже откомпилированная программа...
0
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 6
01.02.2015, 11:41 7
Добавлено через 1 минуту
Cyborg Drone, А можно тогда архив с уже откомпилированной программой или ссылку на скачивание архива этого?Буду очень благодарен.
0
Супер-модератор
5533 / 2562 / 1294
Регистрация: 04.03.2013
Сообщений: 5,540
Записей в блоге: 1
02.02.2015, 00:45 8
Euro_rzn, вы не к тому обращаетесь...
0
Модератор
8397 / 4151 / 2871
Регистрация: 17.08.2012
Сообщений: 13,231
03.02.2015, 11:29 9
Ах, да... Не целиком, экзешник с ошибкой...
0
6 / 6 / 0
Регистрация: 17.11.2014
Сообщений: 19
02.03.2015, 21:25  [ТС] 10
Euro_rzn, еще нужна игра целиком?
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 17
18.03.2016, 23:45 11
да, нужен
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 23:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Игра 2048,рандом
Была поставлена задача,создать метод генерации случайного числа (2 или 4) в случайной свободной...

Простая логическая игра 2048
Правила игры: Всего две цифры, и обе они - двойки. Что делать? Очень просто, нажимайте на кнопки...

Игра 2048: рекомендации к написанию
Ребят, задали написать игру 2048 в c++, даже понятия не имею что делать(

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.