c++ Problem z poruszaniem

0

Mam problem z poruszaniem sie w lewo i prawo w ogóle nie chce isc co moze byc przyczyna oto kod

 #include <iostream>
#include <windows.h>
using namespace std;
//tu tworzymy mape ;)
char Map[20][20] = {"##########",
					"#!       #",
					"#        #",
					"#   @    #",
					"#        #",
					"#        #",
					"#   ######",
					"#        #",
					"#        #",
					"##########"};



int gamespeed = 100; //predkosc
int Level =1;//nasz poziom
bool stop =false;


int main() 
{
	while(stop == false && Level ==1)
	{
		system("cls");
		for (int y =0; y < 10; y++)
		{
			cout <<Map[y]<<endl;
		}
		for(int y=0;y<10;y++)
		{	
			for(int x=0;x<10;x++)
			{
				switch(Map[y][x])
				{
					case '@': //system sterowania dla @
						{
							if(GetAsyncKeyState(VK_UP)!=0)
							{
								int y2 = (y-1);
								switch(Map[y2][x])
								{
									case ' ':
										{
											Map[y][x]=' ';
											y-=1;
											Map[y2][x]='@';
										}break;
									case '!'://Jak wejdzie w ! przejdzie poziom
										{
											Level =2;
										} break;		
								}
							}
							if(GetAsyncKeyState(VK_DOWN)!=0)
							{
								int y2 = (y+1);
								switch(Map[y2][x])
								{
									case ' ':
										{
											Map[y][x]=' ';
											y+=1;
											Map[y2][x]='@';
										}break;
									case '!':
										{
											Level = 2;
										}	
										break;
								
								
							}
							if(GetAsyncKeyState(VK_LEFT)!=0)
							{
								int x2 = (x - 1);
								switch(Map[y][x])
								{
									case ' ':
										{
											Map[y][x]=' ';
											x-=1;
											Map[y][x2]='@';
										}break;
								}
							}
							if(GetAsyncKeyState(VK_RIGHT)!=0)
							{
								int x2 = (x + 1);
								switch(Map[y][x])
								{
									case ' ':
										{
											Map[y][x]=' ';
											x+=1;
											Map[y][x2]='@';
										}break;
								}
							}
							
							
							
						};break;
				}
			}
		}
	
	}
	Sleep(gamespeed);
	//	while(stop==false && Level ==2 )
	//	{
	//		cout<<"LEveL2";
	//		system("Pause");
	//	}
}
	
	return 0;
}
0

Co jest źle?
To, że twój program nie ma prawie żadnej logicznej struktury.
Wpakowałeś wszystko w main co czyni całość totalnie nieczytelną i z zniechęcającą do analizy. Do tego strasznie nieporadnie sformatowałeś kod.
Moja rada, pisz od nowa, dzieląc wszystko na małe funkcje, po 5-10 linijek, wtedy sam będziesz w stanie ogarnąć co robisz źle.

0

pisze pod dev i nie chce dzialac a tobie dziala ten kod bez problemu ?

0

Ma być: switch(Map[y][x2])
Nakręciłeś strasznie. Zapodaj jakieś zmienne Y,X oznaczające obecne położenie aby nie szukać po całości.
Potem ustawiasz Y2=Y; X2=X; sprawdzasz pod rząd klawisze i zmieniasz ewentualnie Y2 i X2;
Po czym raz tylko powtarzasz sprawdzenie czym jest Map[Y2][X2].
Całość da się skrócić co najmniej trzykrotnie.

0

niby dziala tylko chodzi po skosie ;/

1 użytkowników online, w tym zalogowanych: 0, gości: 1