Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cyupuc
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 2
#1

Игра "Сбей самолёт" - C++

05.06.2014, 20:09. Просмотров 329. Ответов 3
Метки нет (Все метки)

как сделать чтобы цикл перерисовки "самолёта"(for(i=0;i<21;i++)) не ждал нажатия кнопки для следующего шага
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
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int gd,gm,err;
gd=DETECT;
initgraph(&gd,&gm,"");
err=graphresult();
if(err!=grOk)
  {
   printf("Error");
   getch();
   return 0;
  }
setbkcolor(BLUE);
setcolor(RED);
line(300,450,300,420);
line(300,420,360,420);
line(360,420,360,450);
line(360,450,300,450);
line(330,420,330,390);
 
int x1=300,x2=360,x3=330,y3=0;
char c;
for(;;)
{
int visota,x0=0,x=60,y,i=0;
char c;
setbkcolor(BLUE);
for (;;)
{
 
 
{visota=1+rand()%6;
   if (visota==1)
   y=40;
   if (visota==2)
   y=80;
   if (visota==3)
   y=120;
   if (visota==4)
   y=160;
   if (visota==5)
   y=200;
   if (visota==6)
   y=240;
 
for(i=0;i<21;i++)
{
if(i==21)
{i=0;
x0=0;
x=60;
}
setcolor(RED);
line (x0,y,x,y);
delay(50);
setcolor(BLUE);
line (x0,y,x,y);
x0=x0+20;
x=x+20;
setcolor(RED);
line (x0,y,x,y);
delay(50);
setcolor(BLUE);
line (x0,y,x,y);
 
if (kbhit());
c=getch();
switch(c){case 75:
if(x1==0)
{setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
 
}
else
{setcolor(BLUE);
 
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
x1=x1-30;
x2=x2-30;
x3=x3-30;
setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
}}
 
switch(c){case 77:
if(x2==630)
{setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
}
else
{setcolor(BLUE);
 
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
x1=x1+30;
x2=x2+30;
x3=x3+30;
setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
}}
 
 
 
switch(c){case 32:
y3=x3;
if(x0<y3)
if(y3<x)
{
i=25;
setcolor(RED);
line(x3,380,x3,visota);
delay(50);
setcolor(BLUE);
line(x3,380,x3,visota);
}
else
{setcolor(RED);
line(x3,380,x3,0);
delay(50);
setcolor(BLUE);
line(x3,380,x3,0);
 
}}
 
switch(c){case 27:
exit(1);
 
 
}}}}}}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 20:09     Игра "Сбей самолёт"
Посмотрите здесь:

C++ "Змейка": при нажатии клавиши игра просто останавливается
C++ Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе
C++ Карточная игра "Дурак" - Ошибка загрузки dll карт
C++ Игра "Крестики нолики", почему не работает проверка окончания?
Игра "Чёт-Нечет" на поле NxN, перевести с Делфи на С++ C++
C++ Игра "Однорукий бандит". Кольцевая очередь. Двусвязный список
C++ Реализовать функцию стрельбы для танка (игра "Танчики")
C++ Игра "Крестики-нолики": правильно выстроить поле
C++ Решить задачу на файловый ввод/вывод (игра "Города")
Найти и исправить ошибки (игра "Морской бой") C++
C++ Карточная игра "Дурак", вывод карт на экран
Как с использованием графических средств C++ сделать "движущийся самолёт"? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6135 / 5738 / 1857
Регистрация: 18.12.2011
Сообщений: 14,670
Завершенные тесты: 1
05.06.2014, 20:14     Игра "Сбей самолёт" #2
Цитата Сообщение от Cyupuc Посмотреть сообщение
if (kbhit());
c=getch();
Точка с запятой после if (kbhit()) не нужна.
C++
1
2
if (kbhit()) 
    c=getch();
Cyupuc
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 2
05.06.2014, 20:35  [ТС]     Игра "Сбей самолёт" #3
немного переделал теперь проблема в том что после нажатия цикл кнопки выполняется до нажатия другой кнопки. можно ли сделать чтобы он выполнялся 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
#include <dos.h>
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int gd,gm,err;
gd=DETECT;
initgraph(&gd,&gm,"");
err=graphresult();
if(err!=grOk)
  {
   printf("Error");
   getch();
   return 0;
  }
setbkcolor(BLUE);
setcolor(RED);
line(300,450,300,420);
line(300,420,360,420);
line(360,420,360,450);
line(360,450,300,450);
line(330,420,330,390);
 
int x1=300,x2=360,x3=330,y3=0;
char c;
for(;;)
{
int visota,x0=0,x=60,y,i=0;
char c;
setbkcolor(BLUE);
for (;;)
{
x0=0;
x=60;
 
{visota=1+rand()%6;
   if (visota==1)
   y=40;
   if (visota==2)
   y=80;
   if (visota==3)
   y=120;
   if (visota==4)
   y=160;
   if (visota==5)
   y=200;
   if (visota==6)
   y=240;
 
for(i=0;i<21;i++)
{
 
setcolor(RED);
line (x0,y,x,y);
delay(50);
setcolor(BLUE);
line (x0,y,x,y);
x0=x0+20;
x=x+20;
setcolor(RED);
line (x0,y,x,y);
delay(50);
setcolor(BLUE);
line (x0,y,x,y);
 
if (kbhit())
c=getch();
switch(c){case 75:
if(x1==0)
{setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
 
}
else
{setcolor(BLUE);
 
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
x1=x1-30;
x2=x2-30;
x3=x3-30;
setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
}}
 
switch(c){case 77:
if(x2==630)
{setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
}
else
{setcolor(BLUE);
 
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
x1=x1+30;
x2=x2+30;
x3=x3+30;
setcolor(RED);
line(x1,450,x1,420);
line(x1,420,x2,420);
line(x2,420,x2,450);
line(x2,450,x1,450);
line(x3,420,x3,390);
 
}}
 
 
 
switch(c){case 32:
y3=x3;
if(x0<y3)
if(y3<x)
{
i=25;
setcolor(RED);
line(x3,380,x3,visota);
delay(50);
setcolor(BLUE);
line(x3,380,x3,visota);
getch();
}
else
{setcolor(RED);
line(x3,380,x3,0);
delay(50);
setcolor(BLUE);
line(x3,380,x3,0);
getch();
}}
 
switch(c){case 27:
exit(1);
 
 
}}}}}}
zss
Модератор
Эксперт С++
 Аватар для zss
6135 / 5738 / 1857
Регистрация: 18.12.2011
Сообщений: 14,670
Завершенные тесты: 1
05.06.2014, 21:19     Игра "Сбей самолёт" #4
Цитата Сообщение от Cyupuc Посмотреть сообщение
можно ли сделать чтобы он выполнялся 1 раз?
Ну так уберите заголовок цикла.
Yandex
Объявления
05.06.2014, 21:19     Игра "Сбей самолёт"
Ответ Создать тему
Опции темы

Текущее время: 00:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru