elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con mi programa de Snake Dev C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con mi programa de Snake Dev C++  (Leído 1,758 veces)
hidraimbot

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con mi programa de Snake Dev C++
« en: 28 Mayo 2016, 03:39 am »

Bueno, lo que pasa es que ya tengo mi programa de snake que funciona a la perfeccionue funciona como quiero a la perfeccion.
Solo que ahora me gustaria pasarlo con archivos de encabezado .h, el problema que tengo es que tendo dos variables de tipo estructuras declaradas como variables globales y creo que lo mejor seria ponerlas como parametros dentro de las funciones ahora que quiero hacerlo de esta manera, pero no puedo, queria saber si algun de ustedes podria ponerme esas variables dentro de los parametros y que funcionara de igual manera, de hacerl los encabezados ya me haria cargo yo, les dejo el codigo aqui abajo.


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <windows.h>

#define V 21
#define H 65
#define N 100


typedef struct{ //serpiente.
int x,y; //coordenadas del cuerpo.
int ModX, ModY; //cambio de estado de x,y.
char imagen; //imagen del momento del cuerpo.
}snk;

typedef struct{ //alimnto.
int x,y; //coordenadas
}frt;

snk Snake[N];
frt fruta;


void inicio(int *tam, char campo[V][H]);
void Intro_Campo(char campo[V][H]);
void Intro_Datos(char campo[V][H], int tam);
void dibujar(char campo[V][H], int puntos);
void loop(char campo[V][H], int tam, int puntos);
void input(char campo[V][H], int *tam, int *muerto, int *puntos);
void update(char campo[V][H], int tam);
void Intro_Datos2(char campo[V][H], int tam);

int main(){
int tam,puntos=0; //Tamaño de serpiente n cada momento.
char campo[V][H]; //Matriz del campo
snk Snake[N];
frt fruta;
system("Color F2");
inicio(&tam,campo); //Iniciar todos nuestros elementos
// dibujar(campo[V][H]);
loop(campo, tam, puntos);
system("pause");
return 0;
}

//Iniciar todos nuestros elementos
void inicio(int *tam, char campo[V][H]){
int i;

//cabeza del snake
Snake[0].x=32;
Snake[0].y=10;

//Tamaño de la serpiente
*tam=4;

//Coordenas Fruta
srand(time(NULL));
fruta.x=rand()%(H-1);
fruta.y=rand()%(V-1);

while(fruta.x==0){
fruta.x=rand()%(H-1);
}
while (fruta.y==0){
fruta.y=rand()%(V-1);
}
for(i=0;i<*tam;i++){
Snake.ModX=1;
Snake.ModY=0;
}
Intro_Campo(campo);
Intro_Datos(campo, *tam);
}

//Creacion del campo de juego
void Intro_Campo(char campo[V][H]){
int i,j;

for(i=0;i<V;i++){
for(j=0;j<H;j++){
if(i==0 || i==V-1){
campo[j]= '/';
}
else if(j==0 || j== H-1){
campo[j]='|';

}
else{
campo[j]=' ';
}
}
}

}

//Metera todos los datos en la matriz campo
void Intro_Datos(char campo[V][H], int tam){
int i;

for (i=1;i<tam;i++){
Snake.x=Snake[i-1].x-1;
Snake.y=Snake[i-1].y;

Snake.imagen= 'X';
}
Snake[0].imagen='O';
for(i=0;i<tam;i++){
campo[Snake.y][Snake.x]=Snake.imagen;
}
campo[fruta.y][fruta.x]='+';
}

//Funcion para dibujar por pantalla todo lo que hay en la matriz campo
void dibujar(char campo[V][H], int puntos){
int i,j;
for(i=0;i<V;i++){
for(j=0;j<H;j++){
printf("%c", campo[j]);
}
printf("\n");
}   printf("-----------------------------------------------------------------\n");
printf("---------------------Puntuacion: [%d]----------------------------\n",puntos);
printf("-----------------------------------------------------------------\n");
}

void loop(char campo[V][H], int tam, int puntos){
int muerto;
muerto=0;
do{
system("cls");
dibujar(campo, puntos);
input(campo,&tam,&muerto,&puntos);//modificamos tamaño
update(campo,tam);

}while(muerto==0);
}


void input(char campo[V][H], int *tam, int *muerto, int *puntos){
int i;
char key;

//comprobamos si estamos muertos
if (Snake[0].x==0 || Snake[0].x == H-1 || Snake[0].y == 0 || Snake[0].y== V-1){
*muerto=1;
}
for(i=1;i< *tam; i++){
if(Snake[0].x==Snake.x && Snake[0].y==Snake.y){
*muerto=1;
}
}

//comprabar si nos hemos comido las frutas
if(Snake[0].x == fruta.x && Snake[0].y == fruta.y){
*tam+=1;
*puntos+=10;
Snake[*tam-1].imagen = 'X';
fruta.x=rand()%(H-1);
fruta.y=rand()%(V-1);

while(fruta.x==0){
fruta.x=rand()%(H-1);
}
while (fruta.y==0){
fruta.y=rand()%(V-1);
}
}
if (*muerto == 0){
if (kbhit()==1){
key= getch();
if (key =='s'&& Snake[0].ModY != -1){
Snake[0].ModX = 0;
Snake[0].ModY = 1;
}
if (key =='w' && Snake[0].ModY != 1){
Snake[0].ModX = 0;
Snake[0].ModY = -1;

}
if (key == 'a' && Snake[0].ModX !=1){
Snake[0].ModX= -1;
Snake[0].ModY =0;
}

if (key == 'd' && Snake[0].ModX != -1){
Snake[0].ModX= 1;
Snake[0].ModY =0;
}
}
}
}


void update(char campo[V][H], int tam){
Intro_Campo(campo); //borrar los datos de la matriz
Intro_Datos2 (campo, tam);//Introducir nuevos datos



}


void Intro_Datos2(char campo[V][H], int tam){
int i;


//Crear la persecucion de los elementos del cuerpo
for(i=tam-1;i>0;i--){
Snake.x=Snake[i-1].x;
Snake.y= Snake[i-1].y;
}
Snake[0].x+=Snake[0].ModX;
Snake[0].y+= Snake[0].ModY;
for(i=0; i<tam;i++){
campo[Snake.y][Snake.x] = Snake.imagen;
}
campo [fruta.y][fruta.x]= '+';

}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
juego SNAKE en C# « 1 2 »
.NET (C#, VB.NET, ASP)
lokot3 14 40,566 Último mensaje 2 Junio 2006, 19:39 pm
por SeniorX
[C] Juego snake
Programación C/C++
Dacan 4 4,645 Último mensaje 22 Marzo 2013, 05:32 am
por Dacan
Ayuda en Código de Snake
Programación C/C++
Firu 5 3,309 Último mensaje 26 Marzo 2013, 22:08 pm
por 85
[Tutorial] Snake en C++/SDL « 1 2 »
Programación C/C++
kaltorak 12 11,059 Último mensaje 20 Agosto 2013, 14:38 pm
por maxim_o
Snake C++
Programación C/C++
paahca 0 1,315 Último mensaje 26 Noviembre 2015, 05:51 am
por paahca
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines