Witam, jakiś czas temu zacząłem programowanie w szkole i nawet mnie to zaciekawiło.
Pokusiłem się o napisanie snake, ale już mam pierwszy błąd, kod nie jest długi bo nie chciałem pisać dalej, gdy nie rozwiązałem tego błędu.
Ciężko opisać na czym polega błąd najlepiej samemu to zobaczyć, chodzi o to, że podchodząc do lewej bocznej i górnej ściany (w komórce 0) głowa węża się nie wyświetla od razu, trzeba zrobić dodatkowy ruch w bok (w przypadku podejścia do górnej ściany) lub w górę/dół (przy bocznej lewej ścianie).
Kod zamieszczam w załączniku oraz wklejam, oto kod:
#include <iostream>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
////////////////////////////////////
// zmienne globalne ///
// ///
char map[20][60]; //mapa ///
int sx=30, sy=10; //pozycja weza ///
// ///
// zmienne globalne ///
////////////////////////////////////
void rysuj() //mapa
{
cout << " ------------------------------------------------------------" << endl; //ramka
for(int i=0;i<20;i++)
{
cout << "|"; //ramka
for(int j=0;j<60;j++)
{
map[i][j]=255;
if(sx==j && sy==i) map[i][j]='O'; //wpisanie weza
cout << map[i][j];
}
cout << "|"; //ramka
cout << endl;
}
cout << " ------------------------------------------------------------"; //ramka
};
int ruch() //sterowanie wezem
{
int odp=getch();
if(odp=='w')
{
map[sy][sx]=255;
sy--;
if(sy<0) sy=19;
}else if(odp=='a')
{
map[sy][sx]=255;
sx--;
if(sx<0) sx=59;
}else if(odp=='s')
{
map[sy][sx]=255;
sy++;
if(sy>19) sy=0;
}else if(odp=='d')
{
map[sy][sx]=255;
sx++;
if(sx>59) sx=0;
}
}
//////////////////////////////////
////////////PROGRAM///////////////
//////////////////////////////////
int main()
{
rysuj();
while(true)
{
if(ruch())
{
system("cls");
rysuj();
}
}
getchar();
return 0;
}