LordofFrog
Enthusiast
Thread Starter
- Mitglied seit
- 03.11.2007
- Beiträge
- 416
ich brauche mal rat, ich habe ein kleines spiel geschrieben, ist auch noch nicht fertig.
nun meine fragen:
ist es besser die positionen eines jeden fahrzeugs beim erstellen (z 149 )in der main funktion zu übergen oder besser in der klasse selber?
und wie funktioniert das mit der enummeration genau, wie muss ich es im Spiel eingeben, um dann die Farbe es Fahrzeugs zu bestimmen?
Code:
// Autorennen.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>
#include <windows.h>
#include <cstdlib>
using namespace std;
void rahmen(void); // Rahmen zeichnen
void gotoxy(int x, int y); // Mauszeiger auf Punkt im Fenster setzen.
void strecke(void); // Streckenbegrenzungen
const int STARTX=25,STARTY=25; // Startposition des Fahrzeugs
class Auto
{
public:
int itsFarbe;
int itsXPosition;
int itsYPosition;
void fahrzeug(int posix,int posiy, int farbe)// Fahrzeug erstellen
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , farbe);
gotoxy(posix,posiy);
cout<<" /^\\ ";
gotoxy(posix,posiy+1);
cout<<"0-| |-0";
gotoxy(posix,posiy+2);
cout<<" | | ";
gotoxy(posix,posiy+3);
cout<<"0-|_|-0";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , 7);
};
void bewegen(int posix, int posiy, int farbe) // Fahrzeug bewegen
{
char richtung;
do{
richtung = _getch();
switch(richtung)
{
case'w':
if (itsYPosition > 0)
{
itsYPosition-=1;
fahrzeug(itsXPosition, itsYPosition, farbe);
gotoxy(itsXPosition,itsYPosition+4);
cout<<" ";
}
break;
case's':
if (itsYPosition <= 75)
{
itsYPosition+=1;
fahrzeug(itsXPosition, itsYPosition, farbe);
gotoxy(itsXPosition,itsYPosition-1);
cout<<" ";
}
break;
case'a':
if (itsXPosition >= 7)
{
itsXPosition-=1;
fahrzeug(itsXPosition, itsYPosition, farbe);
gotoxy(itsXPosition+7,itsYPosition+1);
cout<<" ";
gotoxy(itsXPosition+7,itsYPosition+3);
cout<<" ";
}
break;
case'd':
if (itsXPosition <= 67)
{
itsXPosition+=1;
fahrzeug(itsXPosition, itsYPosition, farbe);
gotoxy(itsXPosition-1,itsYPosition+1);
cout<<" ";
gotoxy(itsXPosition-1,itsYPosition+3);
cout<<" ";
}
break;
};
}while (richtung != 'e');
}; //Ende der Bewegen Funktion
}; //Ende der Klasse
int _tmain(int argc, _TCHAR* argv[])
{
CONSOLE_CURSOR_INFO ci = {10,FALSE}; // Curser verschwinden lassen
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE) , &ci);
char ant;
do
{
system("cls");
rahmen();
gotoxy(20,4);
cout<< "Welcome to the DOS-Console Grand Prix";
gotoxy(25,10);
cout<< "Bitte Spielmodus waehlen!";
gotoxy(30,14);
cout<< "[S]ingleplayer";
gotoxy(30,15);
cout<< "[M]ultiplayer (NYI)";
ant=_getch();
if(ant=='s' || ant=='S'|| ant=='m' || ant=='M'|| ant=='e'||ant=='E')
{
switch(ant)
{
case'e':
case'E':
gotoxy(27,20);
cout <<"Auf wiedersehen";
_getch();
exit(0);
break;
case's':
case'S':
Auto Player, PC1, PC;
int farbe;
enum Farben {Blau=11, Rot, Grün, Gelb};
system("cls");
rahmen();
gotoxy(20,4);
cout<<"Bitte Farbe waehlen!";
cin>>Player.itsFarbe;
system("cls");
strecke();
Player.itsXPosition=STARTX;
Player.itsYPosition=STARTY;
Player.fahrzeug(Player.itsXPosition, Player.itsYPosition, Player.itsFarbe);
Player.bewegen(Player.itsXPosition, Player.itsYPosition, Player.itsFarbe);
PC1.itsXPosition=STARTX;
PC1.itsYPosition=STARTY;
PC1.fahrzeug(PC1.itsXPosition, PC1.itsYPosition, 15);
PC1.bewegen(PC1.itsXPosition, PC1.itsYPosition, 15);
Player.bewegen(Player.itsXPosition, Player.itsYPosition, farbe);
PC1.bewegen(PC1.itsXPosition, PC1.itsYPosition, 15);
_getch();
break;
case'm':
case'M':
gotoxy(27,20);
cout<<"Noch nicht impementiert";
_getch();
break;
};
}else
{
gotoxy(27,20);
cout <<"Ungueltige Eingabe!!!";
_getch();
}
}while(ant!='n' && ant!= 'N');
_getch();
return 0;
};
void rahmen(void) //Erstellt einen Rahmen und zeigt Exit an
{
int i;
for(i= 0;i<80;i++)
{
cout<<"#";
};
for(i= 0;i<79;i++)
{
gotoxy(0,i);
cout<<"#";
gotoxy(79,i);
cout<<"#";
};
for(i=1;i<80;i++)
{
gotoxy(i,78);
cout<<"#";
};
gotoxy(5,70);
cout<<"[E]xit";
};
void gotoxy(int x, int y) // Setzt den Curser an Position x y
{
COORD point;
point.X = x; point.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),point);
};
void strecke(void)
{
for(int i=0;i<40;i++)
{
gotoxy(3,(2*i));
cout<<"# #";
gotoxy(3,(2*i)+1);
cout<<" # ";
gotoxy(75,(2*i));
cout<<" # ";
gotoxy(75,(2*i)+1);
cout<<"# #";
};
};
nun meine fragen:
ist es besser die positionen eines jeden fahrzeugs beim erstellen (z 149 )in der main funktion zu übergen oder besser in der klasse selber?
und wie funktioniert das mit der enummeration genau, wie muss ich es im Spiel eingeben, um dann die Farbe es Fahrzeugs zu bestimmen?