000
11.01.2007, 15:07 Uhr
SearchAndDestroy
|
moin moin,
möchte bischen C++ lernen und dachte Programmierst mal ein kleines Game. Dachte ich ... doch nicht so leicht wie ich mir zuerst vorgestellt hab.
Was ich schon habe ist folgendes:
C++: |
//HEADER--------------------------------------------------------------------- #include <iostream.h> #include <iomanip.h> #include <conio.h> #include <math.h> //VOID-Deklaration----------------------------------------------------------- void feld (void); //MAIN-----------------------------------------------------------------------
int main() {
feld();
} //Spielfeld------------------------------------------------------------------ void feld (void) { char w=205,s=186,k=206,elo=201,elu=200,ero=187,eru=188,sou=203,soo=202,sol=185,sor=204,l=255; char eingabe=0; int groesse=0,richtungseingabe=0,zeile=10,spalte=2,zeilenbegrenzunglinks=0; int zeilenbegrenzungrechts=0,spaltenbegrenzungunten=0,spaltenbegrenzungoben=0; int feld[12][12]={NULL};
//Ascii- Tabelle /*char linie=0; for(int i=0;i<265;i++) { linie=i; cout<<i<<" = "<<linie<<endl<<endl; } getchar();*/
/*Werte der ASCII Zeichen des Spielfeldes Ergebnis leer=255 l doppellinie waagrecht=205 w doppellinie senkrecht=186 s doppellinie kreuz=206 k doppellinie ecke links oben=201 elo doppellinie ecke links unten=200 elu doppellinie ecke rechts oben=187 ero doppellinie ecke rechts unten=188 eru doppellinie seitenteil Oeffnung unten=203 sou doppellinie seitenteil Oeffnung oben=202 soo doppellinie seitenteil Oeffnung links=185 sol doppellinie seitenteil Oeffnung rechts=204 sor */
do { clrscr(); cout<<"\n\tWaehlen Sie Ihren gewuenschten Schwierigkeitsgrad aus:" <<"\n\n\n\n\tFuer leicht (Feld: 8x 8) druecken Sie die Taste\t[l] bzw. [L]" <<"\n\tFuer mittel (Feld: 10x10) druecken Sie die Taste\t[m] bzw. [M]" <<"\n\tFuer schwer (Feld: 12x12) druecken Sie die Taste\t[s] bzw. [S]" <<"\n\n\tFuer die Hilfe druecken Sie die Taste\t\t\t[h] bzw. [H]"; gotoxy(64,2); eingabe=getch();
switch(eingabe) //Auswahl des Schwierigkeitsgrades { case'l': case'L': zeilenbegrenzunglinks=10; //Begrenzung des Spielfeldes zeilenbegrenzungrechts=29; spaltenbegrenzungunten=15; spaltenbegrenzungoben=2;
groesse=8; //Breite und Hoehe des Spielfeldes break;
case'm': case'M': zeilenbegrenzunglinks=10; //Begrenzung des Spielfeldes zeilenbegrenzungrechts=36; spaltenbegrenzungunten=19; spaltenbegrenzungoben=2;
groesse=10; //Breite und Hoehe des Spielfeldes break;
case's': case'S': zeilenbegrenzunglinks=10; //Begrenzung des Spielfeldes zeilenbegrenzungrechts=41; spaltenbegrenzungunten=23; spaltenbegrenzungoben=2;
groesse=12; //Breite und Hoehe des Spielfeldes break;
case'h': case'H': clrscr(); cout<<"\n\tHilfe"; getchar(); eingabe='a'; //Schleife kann nicht beendet werden (variable 'eingabe' ist nicht 'l', 'L', 'm', 'M', 's', 'S', 'h' oder 'H' sondern 'a') break;
} }while(eingabe!='l' && eingabe!='L' && eingabe!='m' && eingabe!='M' && eingabe!='s' && eingabe!='S' && eingabe!='h' && eingabe!='H');
clrscr(); //kopfzeile des Spielfeldes cout<<"\t"<<elo; for (int a=0;a<groesse-1;a++) { cout<<w<<w<<sou;
} cout<<w<<w<<ero<<endl; //innere flaeche des Spielfeldes for(int zeile=0;zeile<groesse-1;zeile++) { cout<<"\t"<<s; for(int spalte=0;spalte<groesse;spalte++) { cout<<l<<l<<s; } cout<<endl<<"\t"<<sor;
for(int spalte2=0;spalte2<groesse-1;spalte2++) { cout<<w<<w<<k; } cout<<w<<w<<sol<<endl; } //fusszeile des Spielfeldes cout<<"\t"<<s; for(int spalte=0;spalte<groesse;spalte++) { cout<<l<<l<<s; }
cout<<endl<<"\t"<<elu; for(int b=0;b<groesse-1;b++) { cout<<w<<w<<soo; } cout<<w<<w<<eru;
gotoxy(zeile,spalte); //geht ins erste Kaestchen des Spielfeldes (Wertzuweisung oben)
int zaehlerzeile=0,zaehlerspalte=0; do { gotoxy(60,2); cout<<"Koordinate"; gotoxy(60,5); cout<<"Spalte:"<<setw(3)<<zaehlerspalte+1; gotoxy(60,6); cout<<"Zeile:"<<setw(4)<<zaehlerzeile+1;
gotoxy(zeile,spalte); getch(); int richtung=getch(); if(richtung==77) //schritt nach rechts { if(zeile<zeilenbegrenzungrechts) { zeile=zeile+3; zaehlerspalte++; //setzt aktuelle Possition im Array } } else if(richtung==75) //schritt nach links { if(zeile>zeilenbegrenzunglinks) { zeile=zeile-3; zaehlerspalte--; //setzt aktuelle Possition im Array } } else if(richtung==80) //schritt nach unten { if(spalte<spaltenbegrenzungunten) { spalte=spalte+2; zaehlerzeile++; //setzt aktuelle Possition im Array } } else if(richtung==72) //schritt nach oben { if(spalte>spaltenbegrenzungoben) { spalte=spalte-2; zaehlerzeile--; //setzt aktuelle Possition im Array } }
}while(richtungseingabe!=120 && richtungseingabe!=88); //das druecken der Taste X beendet die richtungsauswahl } //---------------------------------------------------------------------------
|
mein Problem ist, ich hab sowas von keinen Plan wie ich die Schiffe zufällig setzen lassen kann, sodass die sich auch net kreuzen.
könnte mir das jemand vllt. ergänzen?
dachte dabei an: Leicht: (feldgröße 8x8) = 2x 2er, 2x 3er, 1x 4er Schiffe Mittel: (feldgröße 10x10) = 2x 1er, 2x 2er, 2x 3er, 1x 4er Schiffe Schwer: (feldgröße 12x12) = 4x 1er, 3x 2er, 2x 3er, 1x 4er, 1x 5er Schiffe
Ich beDANKE mich schon einmal bei euch!
MfG S&D
P.S. nehme auch SEHR GERNE Verbesserungsvorschläge an. Dieser Post wurde am 11.01.2007 um 15:13 Uhr von SearchAndDestroy editiert. |