S
So ich habe nun ein kleines Programm geschrieben.
Allerdings bin ich damit noch nicht ganz zufrieden.
#include <iostream>
#include <conio.h>
using namespace std;
namespace taste{
const int p_oben = 72;
const int p_unten = 80;
const int p_rechts = 77;
const int p_links = 75;
const int esc = 27;
}
void pos_ausabe(char feld[], int bewegung, int &position, char *&zeiger_feld){
if(bewegung==-1){
position+=bewegung;
if(position<0){
position=0;
}
else if(position>9){
position=9;
}
else{
getch( );
*zeiger_feld--='_';
}
}
//Nach Rechts ->
else if(bewegung==1){
position+=bewegung;
if(position<1){
position=0;
}
else if(position>9){
position=9;
}
else{
*zeiger_feld++='_';
}
}
//--------------
else if(bewegung==0){
//Nichts
}
feld[position]='X';
system("CLS");
for(unsigned int i=0;i<10;i++){ //Gibt das Spielfeld aus 0-9
cout << feld[i];
}
}
int main(){
int eingabe=0, position=0;
int bewegung=0;
char feld[]={'_','_','_','_','_','_','_','_','_','_'}; //von 0-9
char *zeiger_feld=feld;
pos_ausabe(feld, bewegung, position, zeiger_feld);
do{
eingabe=getch();
switch(eingabe){
case taste::p_oben: cout << "oben\n";
break;
case taste::p_unten: cout << "unten\n";
break;
case taste::p_rechts: bewegung=1;
pos_ausabe(feld, bewegung, position, zeiger_feld);
break;
case taste::p_links: bewegung=-1;
pos_ausabe(feld, bewegung, position, zeiger_feld);
}
}while(eingabe!=taste::esc);
return 0;
}
Ich habe den Array als Feld genommen und wenn ich die Pfeiltasten links oder rechts drücke "läuft" das X da auch hin.
1. Wenn ich z.B. 2x recht drücke und dann links muss ich 2x links drücken bevor das X eine Stelle nach links geht. (sollte mit nur 1x sein)
2. Wenn ich z.B. 2x links drücke und dann rechts geht das X erste eine Stelle zurück dann vor und dann muss ich wieder 1x drücken damit sich das X eine Stelle nach rechts bewegt.
Ich weiß nicht wo das Problem liegt oder liegen könnte.