Hej,
Właściwie kilka dni temu rozpocząłem przygodę z programowaniem i już mam problem, dlaczego program nie działa jak powinien. Założenie jest takie, że program losuje dwuwymiarową tablicę znaków wypełnioną ' ' i 'X' przy czym spacji jest dwa razy wiecej, a rozmiar tablicy podawany jest przy uruchomieniu. Program potem powinien wyświetlać wylosowaną tablicę (ma to wyglądać jak taki labirynt) i w górnym roku ustawiać jedynkę. Następnie za pomocą klawiszy a,s,w,d możemy poruszać jedynką o ile poruszamy się po polach ze spacją (program nie reaguje jak chcemy wejść na X-ściany labiryntu).
I wszystko działa pięknie i fajnie, tylko jeśli wchodzę na pole ze spacją na lewym krańcu labiryntu, to jedynka przeskakuje mi na prawą stronę(o ile tam też jest spacja) i kontunuować spacer od drugiej storny. Moje pytanie dlaczego? Program nie powiniem reagować wtedy, bo kończy się tablica.
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int main() {
int pozycja1=0;
int pozycja2=0;
char gracz='1';
char wybor='\0';
int size=0;
cout<<"podaj rozmiar planszy: ";
cin >> size;
char plansza[size][size]={'\0'};
for(int i=0;i<=size;++i){
for(int j=0;j<=size;++j){
int liczba=rand()%3;
if(liczba==0){
plansza[i][j]='X';
}
else{plansza[i][j]=' ';}
}
}
for(;;){
system("cls");
plansza[pozycja1][pozycja2]=gracz;
for(int i=0;i<=size;++i){
for(int j=0;j<=size;++j){
cout<<plansza[i][j];
}
cout<<endl;
}
wybor=getch();
switch(wybor){
case 's':
if(plansza[pozycja1+1][pozycja2]==' '){
plansza[pozycja1][pozycja2]=' ';
pozycja1=++pozycja1;
}
break;
case 'w':
if(plansza[pozycja1-1][pozycja2]==' '){
plansza[pozycja1][pozycja2]=' ';
pozycja1=--pozycja1;
}
break;
case 'd':
if(plansza[pozycja1][pozycja2+1]==' '){
plansza[pozycja1][pozycja2]=' ';
pozycja2=++pozycja2;
}
break;
case 'a':
if(plansza[pozycja1][pozycja2-1]==' '){
plansza[pozycja1][pozycja2]=' ';
pozycja2=--pozycja2;
}
break;
default:
break;
}
}
return 0;
}