EDIT # 1.
Теперь я вижу, что мои функции не работают с этой игрой, поэтому, пожалуйста, забудьте их.
Все еще не нашли решения, увидели некоторую документацию о том, что Queue's упоминается как fjf2002, но это слишком сложно для меня в этот момент. Попытка сделать массив змеи [20] для хранения координат на 2
{1, 1, 1, 2} будет: Голова (1,1) Хвост (1,2) на карте. Все еще не может понять, как перемещать его по карте и заставлять хвост следовать за головой. Мой разум пуст, пробовав все и разочаровавшись в моем отсутствии опыта. Im не разрешено использовать что-либо за пределами двумерных массивов. Это означает, что ни структуры, ни очереди, ни стеки ... Это должно быть сделано без использования тех, и профессор говорит, что это проще, чем я думаю. (Dont post, что я должен попросить его о решении, поскольку он продолжает говорить то же самое, не отвечая на мои вопросы). Любая идея мне очень помогла бы ...
---------------------------------------- -------------------------------------------------- ------------------------------------------ im с использованием VisualStudio 2013 и программирования в C.
Ищет решение за последние 2 дня и не нашел ничего через Интернет, чтобы помочь мне. Видел десятки различных змейских игр на английском и испанском языках, но я не могу их понять из-за отсутствия объяснения своих программ или из-за моего отсутствия опыта.Невозможно удалить хвост змеи в соответствии с движением головы
Пробовал все мои знания без успеха, и я не могу найти решение самостоятельно.
У меня есть:
- Функция для генерации карты.
- Функция, чтобы переместить змея:
COORD cxy;
#define posicion(x,y) {(cxy.X)= (x);(cxy.Y)= (y); SetConsoleCursorPosition((GetStdHandle(STD_OUTPUT_HANDLE)), (cxy));}
int tablero[20][20], posx = 0, posy = 0;
void movimientoSnake(){
int m = 1, k = 0, tail = 3;
char dir = 'd';
do{
if (kbhit()){
dir = getch();
if (dir == 'w'){
m = 0;
k = -1;
}
if(dir == 's'){
m = 0;
k = 1;
}
if (dir == 'a'){
m = -1;
k = 0;
}
if (dir == 'd'){
m = 1;
k = 0;
}
}
else{
Sleep(500);
posicion(posx += m, posy += k);
printf("%d", 1);
posicion(posx - tail, posy);
printf("%d", 0);
}
} while (2 > 1);
* Змея движется OK в соответствии с WASD ключи, и она оставляет след с 1 по (карта полна 0-х).
* Он перемещается в зависимости от положения: положение (x, y) карты (перемещается там) printf ("% d", 1); (печатает 1). например
Основная проблема заключается в том, когда я хочу удалить след, когда я перемещаюсь вниз, удаляю последнюю позицию и одновременно печатаю новую.
Если возможно я хотел бы решение без слишком сложным (с использованием слишком много библиотек), как теперь я знаю только:
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
Я пытался хранить координаты в массивах, как я видел в почти 90% от змейные игры, но я не понимаю концепцию, поэтому я закончил с кучей попыток без успеха.
Любые идеи? Спасибо вам большое заблаговременно.
'while (2> 1);' ?? –
@Weather_Vane его бесконечный цикл, потому что я хотел его для тестирования. – Papafrita
Для бесконечного цикла принято писать 'while (1)'. –