Implementácia Karla

Programovacie jazyky, rady, poradňa...
FRODO
Novice
Novice
Príspevky: 8
Registrovaný: 02 apr 2010, 0:10

Implementácia Karla

Príspevok od používateľa FRODO »

Zdravím...

Za ulohu sme dostali urobit vlastnu implementaciu Karla. v jazyku C.. Neviem si však teraz rady s jednou podmienkou... Skompiluje ju v poriadku avšak stále nerobí to čo by mala robiť... Cielom tej podmienky je aby Karel nemohol prejst cez stenu...

Kód: Vybrať všetko

#include <windows.h>

#include <stdlib.h>

#define MAX_HEIGHT 20

#define MAX_WIDTH 20

#define WALL -1

#define EMPTY 0

int width,height,karel_x,karel_y;

enum {sever,vychod,juh,zapad} karel_direction;

int i,j;



int world[MAX_HEIGHT][MAX_WIDTH];

void turnOn(){

karel_x=0;

karel_y=0;     

karel_direction=vychod;

width=5;

height=6;

int newWorld[5][6]={

{0,-1,0,0,-1,0},

{0,-1,-1,-1,-1,0},

{0,0,0,0,0,0},

{0,-1,-1,-1,-1,0},

{0,-1,0,0,-1,0}};

for(i=0;i<height;i++){

  for(j=0;j<width;j++)

   world[i][j]=newWorld[i][j];

}

}



void draw(){

system("CLS");

for(i=0;i<height;i++){

for(j=0;j<width;j++){

if(karel_y==i && karel_x==j) { if (karel_direction==vychod) printf(">"); else

                               if (karel_direction==juh) printf("v"); else

                               if (karel_direction==zapad) printf("<"); else

                               if (karel_direction==sever) printf("^");  

} 

else if(world[i][j]==WALL)

printf("#");

else printf(".");

}

printf("\n");

}

sleep(1250);

}

void move()

{

if (karel_direction==vychod  && world[karel_x+1][karel_y]==EMPTY){karel_x++; draw();} else printf("CHYBA!!!");

}
Pre vysvetlenie : Karlov svet je definovany ako pole a v podmienke potrebujem otestovat ci na dalsej suradnici je volno alebo sa tam nachadza stena... Steny du definovane ako makro WALL -1 a volny priestor ako makro EMPTY 0 ... karlove suardnice ako premenne karel_x a karel_y... fukcia draw vykresluje karlov svet a karla...

Problem je v tejto podmienke if (karel_direction==vychod && world[karel_x+1][karel_y]==EMPTY){karel_x++; draw();} else printf("CHYBA!!!");


Mozte mi prosim poradit?

Za odpoved vopred dakujem...
Peppy
Amateur
Amateur
Príspevky: 21
Registrovaný: 08 feb 2010, 21:00

Re: Implementácia Karla

Príspevok od používateľa Peppy »

A v čom je chyba? Karol sa nepohne ? Neprekreslí sa alebo ako?
FRODO
Novice
Novice
Príspevky: 8
Registrovaný: 02 apr 2010, 0:10

Re: Implementácia Karla

Príspevok od používateľa FRODO »

Karol sa pohne aj napriek tomu ze je tam stena...
Peppy
Amateur
Amateur
Príspevky: 21
Registrovaný: 08 feb 2010, 21:00

Re: Implementácia Karla

Príspevok od používateľa Peppy »

Skús:

Kód: Vybrať všetko

if ( (karel_direction == vychod ) && ( world[karel_x+1][karel_y] == EMPTY) )
{
...
}
FRODO
Novice
Novice
Príspevky: 8
Registrovaný: 02 apr 2010, 0:10

Re: Implementácia Karla

Príspevok od používateľa FRODO »

diky ale nic to nepomohlo :cry:
Napísať odpoveď