Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 16.01.2015
Сообщений: 14

Игра "Нахождение одинаковых картинок". Зависает при старте новой игры

18.01.2015, 18:35. Показов 2299. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
запускаю нажимаю на новая игра не работает (зависает)
игра должна находить одинаковые картинки
C++
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
#include <vcl.h>
#pragma hdrstop
 
 
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#define MAX_SIZE 32
#define MAX_H 8
#define MAX_W 8
// #define DEBUG // ðåæèì îòëàäêè
int Pole[MAX_W][MAX_H]; // ïîëå
/* Pole[i][j] < 100 - êîä êàðòèíêè, êëåòêà çàêðûòà;
Pole[i][j] >= 100 íî < 200 - êëåòêà îòêðûòà
(èãðîê âèäèò êàðòèíêó);
Pole[i][j] >= 200 - èãðîê íàøåë ïàðó äëÿ ýòîé êàðòèíêè
*/
Graphics::TBitmap *Pictures; // êàðòèíêè
int np; // êîëè÷åñòâî ïàð êàðòèíîê
int nf; // êîë-âî îòêðûòûõ (íàéäåííûõ) ïàð êàðòèíîê
int no; // êîëè÷åñòâî îòêðûòûõ â äàííûé ìîìåíò êëåòîê
TPoint open1; // êîîðäèíàòû 1-îé îòêðûòîé êëåòêè
TPoint open2; // êîîðäèíàòû 2-îé îòêðûòîé êëåòêè
int W,H; // Êîë-âî êëåòîê ïî ãîðèçîíòàëè è âåðòèêàëè.
// Ïðîèçâåäåíèå W è Í äîëæíî áûòü êðàòíî 2-ì
int WK, HK; // ðàçìåð êëåòêè (êàðòèíêè
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int np;
Pictures = new Graphics::TBitmap();
try {
Pictures->LoadFromFile ("pictures.bmp") ;
}
catch (EFOpenError &e)
{
ShowMessage("Îøèáêà äîñòóïà ê ôàéëó êàðòèíîê.");
return;
}
HK = Pictures->Height-1;
WK = HK;
np = Pictures->Width/WK;
if ( np < 15)
H = 4;
else H = 5;
W = (np*2)/H;
ClientHeight = H * HK;
ClientWidth = W * WK;
Timer1->Enabled = False;
Timer1->Interval = 200;
 
NewGame();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NewGame()
{
int r; // ñëó÷àéíîå ÷èñëî
int buf[MAX_SIZE];
/* â buf[i] çàïèñûâàåì, ñêîëüêî ðàç ÷èñëî i
çàïèñàëè â ìàññèâ Pole */
int i, j; // èíäåêñû ìàññèâîâ
for (i = 0; i < np;i++ )
buf[i] = 0;
Randomize();
for (i = 0; i < H; i++)
for (j = 0; j < W; j++) {
do {
r = RandomRange(0,np);
} while ( buf[r] ==2 );
Pole[i][j] = r; // êîä êàðòèíêè
buf[r]++;
}
nf = 0;
};
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Pole[open1.x][open1.y] += 100;
Pole[open2.x][open2.y] += 100;
no = 0;
Kletka(open2.x,open2.y);
Kletka(open1.x,open1.y);
Form1->Timer1->Enabled = false ;
if ( nf == W*H/2 )
{
Canvas->Font->Name = "Tahoma";
Canvas->Font->Size = 16;
Canvas->Font->Color = clBlue;
Canvas->Font->Color = clBlack;
Canvas->TextOut(100,160,"Game Over!");
Canvas->Font->Size = 10;
Canvas->TextOut(120,210,"(ñ) ÊóëüòèíÍ.Á., 2005");
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
NewGame();
ShowPole();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ShowPole()
{
int row, col;
for ( row = 0; row < H; row++)
for (col = 0; col < W; col++)
Kletka(row,col);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Kletka(int col,int row)
{
int x, y;
TRect src, dst;
x = (col)*WK;
y = (row)*HK;
if ( Pole[col][row] >= 200 ) {
Canvas->Brush->Color = clBtnFace;
Canvas->Pen->Color = clBtnFace;
Canvas->Rectangle(x, y, x+WK-2, y+HK-2);
return;
};
if ( (Pole[col][row] >= 100) && (Pole[col][row] < 200) ) {
 src = Bounds((Pole[col][row]-100 )*WK,0,WK,HK);
 dst = Bounds(x,y,HK-2,WK-2);
 Form1->Canvas->CopyRect(dst,Pictures->Canvas,src);
 
Canvas->Pen->Color = clBlack;
Canvas->Brush->Style = bsClear;
Canvas->Rectangle(x,y,x+WK-2,y+HK-2);
return;
};
if ( (Pole[col][row] >= 0) && (Pole[col][row] < 100))
 
{
Canvas->Brush->Color = clBtnFace;
Canvas->Pen->Color = clBlack;
Canvas->Rectangle(x,y,x+WK-2,y+HK-2);
}
#ifdef DEBUG
// ïîäñêàçêà - íîìåð êàðòèíêè
Canvas->Font->Color = clBlack;
Canvas->TextOut(x+l5,y+15, IntToStr(Pole[col][row]));
#endif
};
 
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
int col;
int row;
col = X/WK;
row = Y/HK;
 
if ( Pole[col][row] >= 200 )
return;
if ( no == 0 )
{
no = 1 ;
open1.x = col;
open1.y = row;
Pole[open1.x][open1.y] += 100;
Kletka(open1.x,open1.y);
return;
};
if ( no == 1 )
{
open2.x = col;
open2.y = row;
if ( (open1.x == open2.x) && (open1.y == open2.y) )
return;
else
{
no = 2; // òåïåðü îòêðûòû äâå êëåòêè
Pole[open2.x][open2.y] += 100;
Kletka(open2.x,open2.y);
if ( Pole[open1.x][open1.y] == Pole[open2.x][open2.y] )
{
nf++;
Form1->Timer1->Enabled = True;
};
return;
}
};
if ( no == 2 )
{
Pole[open1.x][open1.y] -= 100;
Pole[open2.x][open2.y] -= 100;
Kletka (open1.x, open1.y);
Kletka(open2.x,open2.y);
open1.x = col;
open1.y = row;
no = 1;
Pole[open1.x][open1.y] += 100;
Kletka(open1.x,open1.y);
}
};
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::N2Click(TObject *Sender)
{
WinExec("hh.exe dpic.chm", SW_RESTORE);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
ShowPole();
}
//---------------------------------------------------------------------------
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2015, 18:35
Ответы с готовыми решениями:

Составить алгоритм игры нахождения одинаковых соседних картинок
Здравствуйте! Пытаюсь написать игру, в которой надо убрать парные картинки. По горизонтали и вертикали, а также по бокам убрать...

Зависает при старте
Комп через раз\два намертво зависает при запуске windows7 (32разрядная) в момент когда загружается рабочий стол, помогает только кнопка...

2950 зависает при старте
Доброго времени суток форумчане, помогите разобраться, cisco 2950 зависает при старте. C2950 Boot Loader (C2950-HBOOT-M) Version...

1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
19.01.2015, 11:09
Цитата Сообщение от АнастасияНИк Посмотреть сообщение
не работает (зависает)
В пошаговом режиме пройдите и найдите строки, на которых происходит зависание. Проанализируйте их.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2015, 11:09
Помогаю со студенческими работами здесь

Зависает Windows при старте
Как выше было сказано у меня зависает винда после перестановки с 8 помогите пожалуйста!

Форма зависает при ее старте
Пытаюсь в некотором месте создать форму и отобразить на экран. Форма показывается, но при этом завистает. Создаю её тут: private...

Зависает при старте просчета
procedure TForm1.Button1Click(Sender: TObject); begin X:= strtoint(trim(Edit1.text) ); begin while result &gt; s do f:=1; for i:=1...

Нерешенная проблема: Windows зависает при запуске при старте с 2 планками
Всем хай конфиг мать h61m-e lga1155 камень i5 2500k вилюха radeon hd 6850 память 2 планки двух ранговые 1)Atermiter 4gb ddr3...

При старте цикла, программа зависает
Если ввести любой цикл (пример указан ниже), у меня зависает программа до его окончания. Как это исправить? Если надо, могу скинуть...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru