Переменные x
и y
изменяются только в том случае, если нажата клавиша (одно нажатие - одно изменение). Мне нужно сделать автоповторение. Как его реализовать?
char c;
while (gameOver == false)
{
c = (char)(_getch());
if (c == 'w') {
y--;
dir = 1;
break;
}
if (c == 's') {
y++;
dir = 2;
break;
}
if (c == 'a') {
x--;
dir = 3;
break;
}
if (c == 'd') {
x++;
dir = 4;
break;
}
}
Переменная gameOver
равна false
.
Так тоже не работает:
char c = _getch(); // Начальный "толчок"
while(gameOver == false){
if (_kbhit()) c = _getch();
switch(c)
{
case ('w'):
y--;
dir = 1;
break;
case ('s'):
y++;
dir = 2;
break;
case ('a'):
x--;
dir = 3;
break;
case ('d'):
x++;
dir = 4;
break;
}
}
while (gameOver == false)
{
if (cin >> c) {
switch (c) {
case 'w': dir = 1; break;
case 's': dir = 2; break;
case 'a': dir = 3; break;
case 'd': dir = 4; break;
}
}
switch (dir) {
case 1: y--; break;
case 2: y++; break;
case 3: x--; break;
case 4: x++; break;
default:
// не указано как должны меняться переменные если не нажата клавиша. допустим:
++x;
--y;
break;
}
}
Не знаю насколько правильно понел что вам нужно...
Что-то у меня ощущение, что вы не хотите держать клавишу постоянно нажатой, полагаясь на автоповторение? Если вопрос не в этом - извините, ошибся. Если в этом - то цикл я бы делал так:
char c = _getch(); // Начальный "толчок"
while(gameOver == false)
{
if (_kbhit()) c = _getch();
switch(c)
{
case ....
Тогда цикл крутится, пока не будет нажата клавиша. Нажмете - пойдет в другую сторону :)
Но почему бы вам не работать со стрелками на клавиатуре? Как-то привычнее играть ими, а не "буквенными" клавишами.
Вот вам микропрограммка:
#include <stdio.h>
#include <conio.h>
int main(int argc, const char * argv[])
{
char c = _getch(); // Начальный "толчок"
while(c != 0x1B)
{
if (_kbhit()) c = _getch();
printf("%c",c);
}
}
Ткните в клавишу - пойдет вывод этой буквы. Ткнете в другую - пойдет другая и т.д., пока не ткнете в Esc.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В цикле во время каждой итерации цикла создаю 2 thread-а при помощи pthread_create()Оба треда должны получать разные данные
Задача такая, считать из файла название компании, далее пробел считать это в доход компанииПосле все закидывается в вектор структур, считывать...
При добавлении элемента в список, изменяется переменная k, причём иногда программа отрабатывает правильно k всегда равно пятиНо по каким-то...
Нужно, чтобы вычисленные в функции Min_Max значения адресов min и max сохранялись и передавались в функцию CountА функция Count должна считать элементы...