Cita:
Iniciado por eferion Conseguir lo que pides es tan sencillo como esperar a que num,num2 marquen las coordenadas donde se encuentra el 3.
En cualquier caso revisa también lo siguiente:
fflush es una instrucción para usar únicamente con buffers de salida y stdin es una instrucción de entrada. No se quien te ha enseñado a usar eso pero vete aprendiendo que no es para nada una buena práctica.
Código C:
Ver originaldo {
printf("Ingrese el numero de filas que tendra el juego\n"); }
while(filas > maxfilas || filas < minfilas);
¿Qué se supone que hace esa instrucción a=isdigit... si aun no se ha asignado el valor a "filas"?
Por otro lado, si introduces un valor no numérico tu programa va a funcionar mal sí o sí, pruébalo.
Código C:
Ver originalfor(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
matriz[i][j]=0;
matriz[num][num2]=8;
matriz[filas][columnas]=3;
}
}
No tiene sentido que inicialices las celdas [num][num2] y [filas][columnas] una y otra vez, con que lo hagas una única vez sobra.
//No estan inicializadas una y otra ves cada una tiene una diferente funcion. num & num2 es para un random, los define para los maximos & minimos, y bueno tenia entendido que no puedo comenzar con int matriz [][] por eso le puse el valor maximo.
Código C:
Ver original#define maxfilas 10
#define minfilas 3
#define maxcolum 10
#define mincolum 3
int matriz[400][400];
Si el laberinto más grande es de 10x10... ¿por qué forzar una reserva de 400x400?
Código C:
Ver originalmatriz[num][num2]=8;
matriz[filas][columnas]=0;
matriz[filas][columnas]=3;
¿Por qué haces dos asignaciones seguidas a [filas][columnas]? Con dejar solo la segunda te basta.//Eso lo hice mal pero ya lo corregi.
Código C:
Ver originalcase 'w': {
if (matriz[num-1][num2]==0) {
num--;
if(matriz[num][num2]==3){
break;
}
}
break;
}
¿Has probado a pulsar la 'w' cuando estás en la parte superior del mapa? el mismo problema lo tienes con el resto de movimientos.//Como puedo hacer para que no se salga del mapa?
Un saludo.
Ya lo tengo asi, Pero tenia una duda como hago para que el jugador 2 osea, se mueva despues de que yo lo haga y hasta llegar a la llegada.
Código C:
Ver originalmatriz[num3][num4]=2; //jugador que se debe mover solo.
Código C:
Ver originalmatriz[filas-1][columnas-1]=3; //Llegada, Hacia aca se deberia dirijir el segundo jugador despues de que yo haga mi movimiento pero el se debe mover solo.
Código C:
Ver original#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define maxfilas 10
#define minfilas 3
#define maxcolum 10
#define mincolum 3
int main(){
int filas,columnas,i ,j,a,num,num2,num3,num4;
int matriz[400][400];
do {
//fflush(stdin);
printf("Ingrese el numero de filas que tendra el juego\n");
}while(filas > maxfilas || filas < minfilas);
do {
//fflush(stdin);
printf("Ingrese el numero de columnas para el juego\n");
}while(columnas > maxcolum || columnas < mincolum);
//Cargamos la matriz
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
matriz[i][j]=0;
matriz[num][num2]=8;
matriz[filas][columnas]=3;
matriz[num3][num4]=2;
}
}
imprimir(filas,columnas,matriz);
movimiento(filas,columnas,matriz);
return 0;
}
void imprimir(int filas,int columnas,int matriz[maxfilas][maxcolum]) {
//int matriz[filas][columnas];
int num,num2,i,j;
//Imprimiendo la matriz
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j ++) {
if(matriz[i][j]==0) {
}
if(matriz[i][j]==8) {
}
if(matriz[i][j]==3) {
}
if(matriz[i][j]==2) {
}
}
}
}// cierre funcion imprimir.
void movimiento(int filas,int columnas,int matriz[maxfilas][maxcolum]) {
int num,num2,num3,num4;
char tecla;
//int matriz[filas][columnas];
//Yo numero (1)
num2
= rand()%columnas
-1; matriz[num][num2]=8;
//Jugador (2) PC
matriz[num3][num4]=2;
//Posicion de llegada
matriz[filas-1][columnas-1]=3;
do {
matriz[filas][columnas]=0;
matriz[num][num2]=0;
matriz[num3][num4]=0;
switch (tecla) {
case 'w': {
if (matriz[num-1][num2]==0) {
num--;
}
break;
}
case 's': {
if (matriz[num+1][num2]==0 || matriz[num+1][num2]==3) {
num++;
}
break;
}
case 'a': {
if (matriz[num][num2-1]==0) {
num2--;
}
break;
}
case 'd': {
if (matriz[num][num2+1]==0 || matriz[num][num2+1]==3){
num2++;
}
break;
}
}//cierre switch
//Mostrar ganador al llegar al numero 3
if(matriz[num][num2]==matriz[filas-1][columnas-1]){
return 0;
}
//system("cls");
matriz[num][num2]=8;
matriz[filas][columnas]=0;
matriz[filas][columnas]=3;
matriz[num3][num4]=2;
imprimir(filas,columnas,matriz);
}while(tecla != 'x');
}