1
Spiel das Spiel!
Posted by Tim E.
on
Donnerstag, Oktober 18, 2007
Ich habe es endlich geschafft! Ein eigenes Spiel zu programmieren (Mann, bin ich ein Held -.-)!
Aber hey, es ist NICHT in Pascal (Gott bewahre!), obwohl alles in meinem Informatikunterricht begann.
Wie immer ist dem guten Schüler langweilig, weshalb er sich schnell nach einer anderen Beschäftigung umschaut.
Dev-C++ ist seit meinem Auftreten auf den Rechnern installiert, also nichts wie ran an das Programm und etwas sinnvolles coden.
Wie z.B. das Spiel TicTacToe ... anspruchsvoll genug ist es für einen Anfänger wie mich schon...
Nun, anderthalb Wochen nach Beginn habe ich es endlich geschafft, ein fast bugfreies und tolles Spiel zu proggen.
So und seit dem letzten Satz sind noch mal 5 Stunden vergangen und ich habe den Code verdoppelt... ich quote den mal eben, weil ich ja so toll bin (-.-)
Schrecklich, oder? Nun ja, ich habe keine Lust mehr, hier kommt noch eben das fertige Programm zum Spielen: VIEL SPAß O.ô
--TicTacToe.exe--
Aber hey, es ist NICHT in Pascal (Gott bewahre!), obwohl alles in meinem Informatikunterricht begann.
Wie immer ist dem guten Schüler langweilig, weshalb er sich schnell nach einer anderen Beschäftigung umschaut.
Dev-C++ ist seit meinem Auftreten auf den Rechnern installiert, also nichts wie ran an das Programm und etwas sinnvolles coden.
Wie z.B. das Spiel TicTacToe ... anspruchsvoll genug ist es für einen Anfänger wie mich schon...
Nun, anderthalb Wochen nach Beginn habe ich es endlich geschafft, ein fast bugfreies und tolles Spiel zu proggen.
So und seit dem letzten Satz sind noch mal 5 Stunden vergangen und ich habe den Code verdoppelt... ich quote den mal eben, weil ich ja so toll bin (-.-)
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int a[11]={0,0,0,0,0,0,0,0,0,0,0};
/* a[0] ist die Gewinnstelle. Ist a[0]=1, hat der last gewonnen. Normal ist a[0]=0.
a[1-9] sind die ausgewählten. bei 0 steht dort die Zahl, bei 1 ein x, bei 2 ein o bei 3 nichts.
a[10] ist die Endlösung, also welches Schema am Ende verwendet wurde, um zu gewinnen.
*/
//pruf
void pruf(){
cout<<"+-----+\n";
for (int i=6;i>=0;i-=3){
cout<<"|";
for (int j=1;j<4;j++){
if(a[i+j]==0)
cout<<i+j<<"|";
else if(a[i+j]==1)
cout<<"x|";
else if(a[i+j]==2)
cout<<"o|";
else
cout<<" |";
}
cout<<endl;
if(i>0)
cout<<"+-+-+-+\n";
}
cout<<"+-----+\n\n";
}
//gewinn
void gewinn(){
int re=0;
int durchlauf=1;
do{
switch (durchlauf){
case 1:if((a[9]==1 && a[6]==1 && a[3]==1)||(a[9]==2 && a[6]==2 && a[3]==2)){
re=1;
a[10]=1;
}
else
re=0;
break;
case 2:if((a[8]==1 && a[5]==1 && a[2]==1)||(a[8]==2 && a[5]==2 && a[2]==2)){
re=1;
a[10]=2;
}
else
re=0;
break;
case 3:if((a[7]==1 && a[4]==1 && a[1]==1)||(a[7]==2 && a[4]==2 && a[1]==2)){
re=1;
a[10]=3;
}
else
re=0;
break;
case 4:if((a[9]==1 && a[8]==1 && a[7]==1)||(a[9]==2 && a[8]==2 && a[7]==2)){
re=1;
a[10]=4;
}
else
re=0;
break;
case 5:if((a[6]==1 && a[5]==1 && a[4]==1)||(a[6]==2 && a[5]==2 && a[4]==2)){
re=1;
a[10]=5;
}
else
re=0;
break;
case 6:if((a[3]==1 && a[2]==1 && a[1]==1)||(a[3]==2 && a[2]==2 && a[1]==2)){
re=1;
a[10]=6;
}
else
re=0;
break;
case 7:if((a[9]==1 && a[5]==1 && a[1]==1)||(a[9]==2 && a[5]==2 && a[1]==2)){
re=1;
a[10]=7;
}
else
re=0;
break;
case 8:if((a[7]==1 && a[5]==1 && a[3]==1)||(a[7]==2 && a[5]==2 && a[3]==2)){
re=1;
a[10]=8;
}
else
re=0;
break;
};
durchlauf++;
}
while(durchlauf<9 && re!=1);
if(re==0)
a[0]=0;
else
a[0]=1;
}
//arrayzuweiser
void arrayzuweiser(int a0,int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9,int a10){
a[0]=a0;
a[1]=a1;
a[2]=a2;
a[3]=a3;
a[4]=a4;
a[5]=a5;
a[6]=a6;
a[7]=a7;
a[8]=a8;
a[9]=a9;
a[10]=a10;
}
//ende
void ende(int last){
if (a[10]==1)
arrayzuweiser(1,4,4,last,4,4,last,4,4,last,1);
else if(a[10]==2)
arrayzuweiser(1,4,last,4,4,last,4,4,last,4,1);
else if(a[10]==3)
arrayzuweiser(1,last,4,4,last,4,4,last,4,4,1);
else if(a[10]==4)
arrayzuweiser(1,4,4,4,4,4,4,last,last,last,1);
else if(a[10]==5)
arrayzuweiser(1,4,4,4,last,last,last,4,4,4,1);
else if(a[10]==6)
arrayzuweiser(1,last,last,last,4,4,4,4,4,4,1);
else if(a[10]==7)
arrayzuweiser(1,last,4,4,4,last,4,4,4,last,1);
else
arrayzuweiser(1,4,4,last,4,last,4,last,4,4,1);
}
//main
int main(){
string again;
do{
arrayzuweiser(0,0,0,0,0,0,0,0,0,0,0);
system("cls");
string nameX;
string nameO;
int last=2;
int wahl;
//1 ist x, also nameX
//2 ist o, also nameO
cout<<"Dies ist das Spiel 'TicTacToe'.\nOptimal waeren zwei Spieler, die ihre Felder mit der Eingabe\nder jeweiligen Zahl bestaetigen.\n\n";
cout<<"Spieler x, geben Sie bitte Ihren Namen ein: ";
cin>>nameX;
cout<<"Spieler o, geben Sie bitte Ihren Namen ein: ";
cin>>nameO;
//eig. Programm!!
do{
sprung1:
system("cls");
if(last==2){
cout<<nameX<<" ist dran. Bitte waehle eine Position.\n\n";
}
else{
cout<<nameO<<" ist dran. Bitte waehle eine Position.\n\n";
}
pruf();
cout<<">";
cin>>wahl;
if(a[wahl]!=0){
cout<<"Dies ist schon vergeben. ";
system("pause");
goto sprung1;
}
else{
if (last==1){
a[wahl]=2;
last=2;
}
else{
a[wahl]=1;
last=1;
}
}
gewinn();
cin.get();
}while(a[0]==0);
system("cls");
ende(last);
pruf();
if (last==1)
cout<<nameX<<" hat gewonnen!! Gratz!\n\n";
else
cout<<nameO<<" hat gewonnen!! Gratz!\n\n";
cout<<"Ein weiteres Spiel? (j/n): ";
cin>>again;
}while(again=="j");
}
Schrecklich, oder? Nun ja, ich habe keine Lust mehr, hier kommt noch eben das fertige Programm zum Spielen: VIEL SPAß O.ô
--TicTacToe.exe--