0 / 0 / 0
Регистрация: 23.04.2012
Сообщений: 34
1

Создать меню для игры

23.12.2012, 13:07. Показов 6516. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При запуске программы загружается и меню и игра одновременно!!!
(Как на картинке)
Я хочу чтобы сначала выходило меню, а при нажатии на кнопку "Новая игра" запустилась игра.
Вот собственно код программы
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
uses graphabc,Events,ABCObjects;
const nmax=9;
type mas=array [1..nmax,1..nmax] of byte;
var Mk:array [1..9, 1..9] of PictureABC;
a: mas; n: byte;
ll,zp,menu1, menu2, menu3, menu4, menu11, menu12, menu13, menu14, m1, m11, m2, m12, m3, m13, m4, m14, m5, m15, m6, m16, back, back1:PictureABC;
k,b,i,j,i1,j1,flag,flag1,u:integer;
xk,yk: integer;
 
 
 
 
procedure MouseMove(x,y,mb: integer);
begin
if u=1 then
  begin
  if menu1.PtInside(x,y)= true then
  menu11.visible:=true
  else
  menu11.visible:=false;
 
 if menu4.PtInside(x,y)= true then
  menu14.visible:=true
  else
  menu14.visible:=false;
  end
else
 
  begin
  if back.ptinside(x,y)=true then
  back1.visible:=true
  else
  back1.visible:=false;
  end;
  end;
 
 
procedure numb(x,y,n: integer);
begin
ll:=PictureABC.Create(x,y,'bamboo'+inttostr(n)+'.png');
end;
 
 
procedure GenMap(var z: mas; var n: byte);
var i,j,ik,jk:byte;
begin
n:=9; ik:=random(n)+1; jk:=random(n)+1;
for i:=1 to n do
    for j:=1 to n do
        begin
        while z[ik,jk]<>0 do
              begin
              ik:=random(n)+1; jk:=random(n)+1;
              end;
        z[ik,jk]:=j;
        end;
end;
 
procedure DrawMap(z: mas; n: byte);
var i,j: byte; x,y: integer;
begin
n:=9;
for i:=1 to n do
    for j:=1 to n do
        begin
        xk:=25+(43*i); yk:=25+(60*j);
 
        mk[i,j]:= PictureABC.Create(xk,yk,'bamboo'+inttostr(a[i,j])+'.png');
        end;end;
 
 
procedure mousedown(x,y,mb:integer);
begin //1
if u=1 then
  begin //2
  if menu1.PtInside(x,y)= true then
     begin
     {что сюда писать}
 
 
     end;
  if menu4.PtInside(x,y)= true then
  begin  //5
  CloseWindow;
  end; //-5
  end  //-2
else
  begin //6
  if u=0 then
  begin  //7
  if back.PtInside(x,y)= true then
     begin  //8
       u:=2;
 
 
 
 
       menu1.visible:=true;
       menu4.visible:=true;
 
     end;  //-8
 
 
 
 
  end //-7
  else
  begin //9
  if back.PtInside(x,y)= true then
     begin   //10
       u:=1;
 
       LoadWindow ('50.bmp');
       back.visible:=false;
       back1.visible:=false;
       menu1.visible:=true;
       menu4.visible:=true;
 
     end;   //-10
  end;  //-9
 
 
 
//второй клик
 if (k<>0) and (b<>0) then
 begin  //11
  flag1:=0;
for i:=1 to n do
    for j:=1 to n do
    if a[i,j]<>0 then if mk[i,j].ptinside(x,y)=true then
   if a[i,j] =  a[k,b]  then begin {12} mk[i,j].destroy; mk[k,b].destroy; a[i,j] :=0;  a[k,b]:=0; flag1:=1; end;//-12
   end;   //-11
 
if (flag1 = 0) then begin {13}  zp.visible:=false; k:=0; b:=0; end; //-13
 
 
flag:=0;
for i:=1 to n do
    for j:=1 to n do
if a[i,j]<>0 then if mk[i,j].ptinside(x,y)=true then begin //14
zp.visible:=true;
zp.moveto(mk[i,j].left,mk[i,j].top);
mk[i,j].tofront;
k:=i;
b:=j;
flag:=1;
//k,b - номер уже выделенного элемента  флаг для проверки выделения
 
 
 
//mk[i,j].destroy; //выделять  метка 1
 
//a[i,j]:=0;
//mk[i+1,j+1].destroy;
end;//-14
 
if (flag = 0) then begin {15} zp.visible:=false; k:=0; b:=0; end; //-15
 
 
end; //-6
end; // -1
 
 
begin
LoadWindow ('100.PNG');
SetWindowSize(648,496);
centerwindow;
OnMouseMove:=MouseMove;
OnMouseDown:=MouseDown;
 
 zp:=CreatePictureABC(0,200,'11.bmp');
 zp.width:=45;
 zp.height:=60;
 zp.visible:=false;
k:=0;
b:=0;
i1:=1;j1:=1;
GenMap(a,n);
DrawMap(a,n);
 
menu1:=CreatePictureABC(0,100,'52.bmp');
  menu11:=CreatePictureABC(0,100,'52 1.bmp');
  menu11.visible:=false;
  menu4:=CreatePictureABC(0,340,'55.bmp');
  menu14:=CreatePictureABC(0,340,'55 1.bmp');
  menu14.visible:=false;
  back:=CreatePictureABC(0,540,'back.bmp');
  back.visible:=false;
  back1:=CreatePictureABC(0,540,'back1.bmp');
  back1.visible:=false;
 
 
end.
Скиньте пожалуйста хоть кусочек кода или желательно готовое меню с игрой.
Миниатюры
Создать меню для игры  
Вложения
Тип файла: rar курсовая работа 1215.rar (1.46 Мб, 25 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2012, 13:07
Ответы с готовыми решениями:

Меню для игры
Помогите пожалуйста создать меню в Pascal abc. Меню должно содержать 5 вертикальных пунктов где то...

Пишу меню для игры , при нажатии на белое поле выскакивает ошибка и процесс завершается
Если нажимать не на квадраты , а на белое поле (фон ), то программа выдает ошибку и закрывается ,...

Создать меню для программы
Помогите зделать меню для етой задачи) .Мне нужно два окна для ввода числа и вывода и кнопку для...

Создать меню для программы
меню.

2
0 / 0 / 0
Регистрация: 23.04.2012
Сообщений: 34
23.12.2012, 17:39  [ТС] 2
Как сделать так чтобы при запуске программы запускалась не игра
а меню!!! Потом только при нажатии на определенную кнопку игра запускается.
У меня две процедуры отвечающие за прорисовку игрового поля
GenMap(a,n);
DrawMap(a,n);
вот куда бы я их не ставил программа все равно рисует игровое поле поверх меню
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
23.12.2012, 18:23 3
Как вариант модуль Events(если игра реально в Pascal ABC).
Модуль Events предназначен для создания программ, управляемых событиями. Он работает только в паре с модулем GraphABC. При одновременном подключении модулей GraphABC и Events программа после запуска и выполнения своего основного блока begin/end не завершается, а продолжает выполняться, отслеживая возникающие события. Все события связаны с графическим окном: это события, приходящие от мыши, клавиатуры, события изменения размеров графического окна и событие его закрытия. После закрытия графического окна программа завершается.
Создаете события, а потом уже в обработчике рисуете поле. Или же можно реализовать на модуле VCL
Модуль VCL (Visual Components Library - библиотека визуальных компонентов) содержит компоненты в стиле Delphi, позволяющие разрабатывать приложения с главной формой, на которую могут быть помещены стандартные элементы управления Windows. Приложения этого типа в Pascal ABC называются приложениями Pascal ABC Forms. Они являются событийно управляемыми и завершаются лишь после закрытия главной формы.
0
23.12.2012, 18:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2012, 18:23
Помогаю со студенческими работами здесь

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

Меню для игры
Здравствуйте! Как создать меню для игры на Delphi. И как это сделать так, чтобы меню убиралось и...

Меню для игры
пишу курсовик. уже почти готов, начинаю готовить меню для игры.. не могу понять принцип...

Меню для игры
Есть код игры &quot;Змейка&quot; на Си. Как сделать меню с выбором: Игра, Рекорды, Выход. Чтобы после выбора...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru