Ich hab jetzt mal mehr oder weniger aus Langeweile angefangen Snake mit c++ zu programieren. Als Bewegung hab ich einfach so gemacht das er das lezte Zeichen der Schlange überschreibt, und vorne dahin eins setzt wo die Schlange hinsoll, nur hab ich jetzt irgendwie das Problem, das er, wenn ich mit den Pfeiltasten steuere, er hinten eins zuviel überschreibt.
Der Quellcode ist bisher (noch nicht ganz fertig):
#include<iostream>
#include "ic.hpp"
#include<conio.h>
#define SNAKE_LENGTH 10
using namespace std;
using namespace ic;
using namespace ic::shorties;
void drawFruit(int, int);
void drawSnake(char);
int x[SNAKE_LENGTH]={3,4,5,6,7,8,9,10,11,12},
y[SNAKE_LENGTH]={6,6,6,6,6,6,6,6,6,6};
int main()
{
int posFruitX, posFruitY;
char key;
posFruitX = rand()%80;
posFruitY = rand()%25;
drawFruit(posFruitX,posFruitY);
do
{
key=getch();
drawSnake(' ');
for(int z=SNAKE_LENGTH-1; z>0 ; z--)
{
x[z]=x[z-1];
y[z]=y[z-1];
}
switch(key)
{
case 'w':
case 72: <-- Da ist wohl irgendwo das Problem
case 'W':
y[0]=y[0]-1;
break;
case 's':
case 80:
case 'S':
y[0]=y[0]+1;
break;
case 'a':
case 75:
case 'A':
x[0]=x[0]-1;
break;
case 'd':
case 77:
case 'D':
x[0]=x[0]+1;
break;
}
drawSnake('O');
if(posFruitX==x[0] && posFruitY==y[0])
{
posFruitX = rand()%80;
posFruitY = rand()%25;
drawFruit(posFruitX,posFruitY);
}
}
while(true);
return 0;
}
void drawSnake(char c)
{
for (int z=0;z<SNAKE_LENGTH;z++)
{
gotoxy(x[z],y[z]);
textcolor(FG_GREEN);
cout << c;
}
}
void drawFruit (int x, int y)
{
gotoxy(x,y);
textcolor(FG_RED);
cout << '@';
}
Ich weiss es ist noch nicht ganz fertig.
Wenn ich mit w, a, s und d steuere fuktioniert das was ich bis jetzt hab, nur bei den Pfeiltasten gibs die Probleme.
Der Quellcode ist bisher (noch nicht ganz fertig):
#include<iostream>
#include "ic.hpp"
#include<conio.h>
#define SNAKE_LENGTH 10
using namespace std;
using namespace ic;
using namespace ic::shorties;
void drawFruit(int, int);
void drawSnake(char);
int x[SNAKE_LENGTH]={3,4,5,6,7,8,9,10,11,12},
y[SNAKE_LENGTH]={6,6,6,6,6,6,6,6,6,6};
int main()
{
int posFruitX, posFruitY;
char key;
posFruitX = rand()%80;
posFruitY = rand()%25;
drawFruit(posFruitX,posFruitY);
do
{
key=getch();
drawSnake(' ');
for(int z=SNAKE_LENGTH-1; z>0 ; z--)
{
x[z]=x[z-1];
y[z]=y[z-1];
}
switch(key)
{
case 'w':
case 72: <-- Da ist wohl irgendwo das Problem
case 'W':
y[0]=y[0]-1;
break;
case 's':
case 80:
case 'S':
y[0]=y[0]+1;
break;
case 'a':
case 75:
case 'A':
x[0]=x[0]-1;
break;
case 'd':
case 77:
case 'D':
x[0]=x[0]+1;
break;
}
drawSnake('O');
if(posFruitX==x[0] && posFruitY==y[0])
{
posFruitX = rand()%80;
posFruitY = rand()%25;
drawFruit(posFruitX,posFruitY);
}
}
while(true);
return 0;
}
void drawSnake(char c)
{
for (int z=0;z<SNAKE_LENGTH;z++)
{
gotoxy(x[z],y[z]);
textcolor(FG_GREEN);
cout << c;
}
}
void drawFruit (int x, int y)
{
gotoxy(x,y);
textcolor(FG_RED);
cout << '@';
}
Ich weiss es ist noch nicht ganz fertig.
Wenn ich mit w, a, s und d steuere fuktioniert das was ich bis jetzt hab, nur bei den Pfeiltasten gibs die Probleme.
Kommentar