Witam piszę sobie ostatnio jakieś proste gry w c++ jednak mam pewien problem mianowicie:
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <string>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int szer=50,wys=25;//wielkosc planszy
char pd=188,pg=187,lg=201,ld=200; //narozniki mapy
char poz=205,pion=186;//dolna i górna ramka
char sciana=178,czolg=219;// wypelnienie mapy
char pole[50][25];
int gora=296,dol=304,lewo=299,prawo=301,klawisz;//sterowanie
char kierunek='p';
int ile=0;
//wspolzedne
int Xczolg=5,Yczolg=11;
int histXczolg[10000],histYczolg[10000];
//wspolzedne
int main()
{
for(int i=0;i<wys;i++) //uzupelnienie planszy pustymi polami - P
{
for(int j=0;j<szer;j++)
{
pole[j][i]='p';
}
}
pole[Xczolg][Yczolg]='c';
//rysowanie scian----------------------------------------------------------------------------------
for(int i=10;i<21;i++)
{
pole[10][i]='s';
}
//rysowanie planszy------------------------------------------------------------------------------
idzdoxy(0,0);
cout<<endl<<endl;
cout<<lg;
for(int i=0;i<szer;i++)
{
cout<<poz<<poz; //GÓRNA RAMKA
}
cout<<pg;
for(int i=0;i<wys;i++)
{
cout<<endl<<pion;
for(int j=0;j<szer;j++)
{
if(pole[j][i]=='p') cout<<" "; // srodek planszy
if(pole[j][i]=='s') cout<<sciana<<sciana;
if(pole[j][i]=='c') cout<<czolg<<czolg;
}
cout<<pion;
}
cout<<endl<<ld;
for(int i=0;i<szer;i++)
{
cout<<poz<<poz; //DOLNA RAMKA
}
cout<<pd;
for(;;)//petla gry
{
ile++;
histXczolg[ile]=Xczolg;
histYczolg[ile]=Yczolg;
if(kbhit()) // Jesli nacisniemy klawisz
{
klawisz=getch();
if(klawisz==224) klawisz+=getch();
if (klawisz==gora ) kierunek='g';
if (klawisz==dol ) kierunek='d';
if (klawisz==lewo ) kierunek='l';
if (klawisz==prawo) kierunek='p';
if(kierunek=='d' && pole[Xczolg][Yczolg-1] && pole[Xczolg][Yczolg+1]=='p')
{
Yczolg++;
pole[Xczolg][Yczolg]='c';
pole[histXczolg[ile]][histYczolg[ile]]='p';
}
if(kierunek=='g' && pole[Xczolg][Yczolg+1] && pole[Xczolg][Yczolg-1]=='p')
{
Yczolg--;
pole[Xczolg][Yczolg]='c';
pole[histXczolg[ile]][histYczolg[ile]]='p';
}
if(kierunek=='l' && pole[Xczolg-1][Yczolg]=='p') //SPRAWDZANIE CZY POLE JEST PUSTE CZY MOZE SIE TAM PORUSZYC
{
Xczolg--;
pole[Xczolg][Yczolg]='c';
pole[histXczolg[ile]][histYczolg[ile]]='p';
}
if(kierunek=='p' && pole[Xczolg+1][Yczolg]=='p')
{
Xczolg++;
pole[Xczolg][Yczolg]='c';
pole[histXczolg[ile]][histYczolg[ile]]='p';
}
else
pole[Xczolg][Yczolg]='c';
}
} //for
return 0;
}
jak wrzucam rysowanie planszy do pętli for(;;) wszystko działa w porządku pomijając miganie ekranu spowodowane prawdopodobnie odświeżaniem tej planszy. Rozwiązaniem tego jest ponoć przerzucenie rysowania planszy przed pętle jednak u mnie wyrzuca błąd -1073741819 (0xC0000005) i zrywa program. Jest ktoś w stanie wskazać mi błąd będę wdzięczny.
Wspomagałem się tym filmem nieco (https://youtu.be/8Z1VqLd6U34?t=2084)