Al precionar la flecha abajo no hace nada
Publicado por Emanuel (4 intervenciones) el 13/10/2020 02:36:47
Al presionar la flecha abajo la flecha no funciona
Hola, ya realice una pregunta anterior mente va este e vuelto a tener un problema al que busco una explicación es en el mismo programa(Es un juego de serpiente) va no voy a extender
explicación breve, al presionar la flecha abajo no funciona.
ya probé invertir y medio funciono pero abajo falla.
"No e avanzado mucho con el juego desde la ultima vez por motivos de tiempo"
Se agradece mucho la ayuda.
dejo el código aquí abajo.
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
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#define ARRIBA 72 //NUMEROS ASOCIADOS A LAS FLECHAS.
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 98
#define ESC 27
int cuerpo[200][2];
int n = 1;
int tam = 3;
int x = 10 , y = 12;
int dir = 5;
int xc = 30, yc = 15;
char tecla;
void gotoxy(int x, int y) //funcion que posiciona el cursos e.
{
HANDLE hCon;
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon,dwPos);
}
void pintar(){
//lineas horizontales
for(int i = 2 ; i < 78 ; i++){
gotoxy(i,3); printf("%c",205);
gotoxy(i,23); printf("%c",205);
}
//lineas verticales
for(int i = 4 ; i < 23 ; i++){
gotoxy(2,i); printf("%c",186);
gotoxy(77,i); printf("%c",186);
}
// esquina
gotoxy(2,3); printf("%c",201);
gotoxy(2,23); printf("%c",200);
gotoxy(77,3); printf("%c",187);
gotoxy(77,23); printf("%c",188);
}
void guardar_posicion(){
cuerpo[n][0] = x;
cuerpo[n][1] = y;
n ++;
if(n== tam) n = 1;
}
void dibujar_cuerpo(){
for(int i = 1 ; i < tam ; i++){
gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
}
}
void borrar_cuerpo(){
gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
}
void teclear(){
if(kbhit()){
tecla = getch();
switch(tecla){
case ARRIBA :
if(dir != 2)
dir = 1;
break;
case ABAJO :
if(dir != 1)
dir = 2;
case DERECHA :
if(dir != 4)
dir = 3;
break;
case IZQUIERDA :
if(dir != 3)
dir = 4;
break;
}
}
}
void comida(){
if(x == xc && y == yc){
xc = (rand()%73)+4;
yc = (rand()%19)+4;
tam++;
gotoxy(xc,yc) ;printf("*",4);
}
}
int main(){
pintar();
gotoxy(xc,yc) ;printf("*",4);
while(tecla != ESC){
borrar_cuerpo();
guardar_posicion();
dibujar_cuerpo();
comida();
teclear();
if(dir == 1) y--;
if(dir == 2) y++;
if(dir == 3) x++;
if(dir == 4) x--;
Sleep(100);
}
pintar();
system("pause>null");
return 0;
}
Valora esta pregunta


0