При выполнении веток case в switch,
происходит «проваливание» в следующую ветку.
Описываю ход выполнения:
switch (_getch()) {
case 'e'://Если зашли сюда
rev_horiz_r();//Выполняем
dr();//Выполняем
//Здесь нет break;, поэтому
case 'w'://Проваливаемся сюда
rev_horiz_l();//Выполняем как ни в чем не бывало
dr();//Выполняем
}
Итого получается, что при нажатии на 'e', у Вас сначала всё «крутится» вправо,
а «затем», сразу же, крутится влево, поэтому создается впечатление, что ничего не происходит.
Решение — поставить break;
switch (_getch()) {
case 'e':
rev_horiz_r();
dr();
break;//Выйдем из switch
case 'w':
rev_horiz_l();
dr();
//В последней секции можно не ставить break,
break;//но во избежании дальнейших ошибок, лучше поставить.
}
Могу кое-что посоветовать: Вы ещё можете сделать и так, чобы цифры менялись не только по горизонтали, но и по вертикали(при нажатии двух других клавиш).
Удачи в создании!
Без ооп
(Так как в предоставленном сайтом компиляторе возникае ошибка «EOF when reading a line», то лучше использовать другой компилятор, например, этот )
Итого: w — поворот самого куба вверх
s — поворот вниз
a — поворот влево
d — поворот вправо
f/r — поворот задней стороны
g/t — поворот передней стороны
h/y — поворот левой стороны
j/u — поворот правой стороны
k/i — поворот нижней стороны
l/o — поворот верхней стороны
Spirit
conio.h.
Классная прога! Вот уметь бы её в фрейме сделать...
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Здравствуйте, недавно я начал учить язык C++.
Вот часть моей программы:
Я столкнулся с такой проблемой:
нажимая на клавишу W цифры в развертке кубика меняються, однако нажимая на клавишу E ничего не происходит.
Так же прошу помочь мне с оптимизацией программы.
Подробно код посмотрю вечером, а сейчас скажу, где Вы можете поискать логический баг.
1) В input().
2) В rev_horiz_r().
Благодарю за помощь!
Нашли? Словили баг за хвост?
На счёт оптимизации смотрите ссылку:
Link
При выполнении веток case в switch,
происходит «проваливание» в следующую ветку.
Описываю ход выполнения:
Итого получается, что при нажатии на 'e', у Вас сначала всё «крутится» вправо,
а «затем», сразу же, крутится влево, поэтому создается впечатление, что ничего не происходит.
Решение — поставить break;
Остальной код не смотрел.
Я просмотрела и заметила, что отсутствует оператор break(), но Вы сказали это раньше, мастер-успел.
Благодарю за проявленное терпение! Теперь при условии наличия других функций, «кубик» будет полностью функцонировать.
И у меня с брейком всё получилось. Я поняла: просто функции «налаживаются» друг на друга и прога глючит.
Могу кое-что посоветовать: Вы ещё можете сделать и так, чобы цифры менялись не только по горизонтали, но и по вертикали(при нажатии двух других клавиш).
Удачи в создании!
Вот рабочий прототип моего кубика!
Ниже представлены черновые версии этой же программы на языке Python3
На основе ооп
Без ооп
(Так как в предоставленном сайтом компиляторе возникае ошибка «EOF when reading a line», то лучше использовать другой компилятор, например, этот )
Итого:
w — поворот самого куба вверх
s — поворот вниз
a — поворот влево
d — поворот вправо
f/r — поворот задней стороны
g/t — поворот передней стороны
h/y — поворот левой стороны
j/u — поворот правой стороны
k/i — поворот нижней стороны
l/o — поворот верхней стороны
conio.h.
Классная прога! Вот уметь бы её в фрейме сделать...
А Вы уже на питоне умеете?!
Спасибо!
Чуть-чуть умею.
conio.h.
Я вскоре думаю создать свою забавку.
conio.h.
Теперь я знаю, почему у вас цифры вместо букв! Я слышала,char связан с шестнадцатеричной системой исчисления. Попробуйте string.
А нет, не угадали.
Цифры нужны были, что бы проверить правильность работы функций, их роль могли выполнять любые неодинаковые символыю
conio.h, можете выделить цветом.