Programmieren lernen ist so trocken... Mögliche Learning by Doing tipps?
-
C++-Anfänger schrieb:
Wie mache ich ein Spiel für Konsolen?
Na, einfach programmieren. Z.B. so:
#include <iostream> #include <ctime> int main() { srand(time(0)); int zahl = rand() % 101; std::cout << "Gebe eine Zahl zwischen 0 und 100 ein!"; int rate; do { std::cout << std::endl; std::cin >> rate; if(zahl < rate) { std::cout << "Die gesuchte Zahl ist kleiner!"; } if(zahl > rate) { std::cout << "Die gesuchte Zahl ist größer!"; } } while (zahl != rate); std::cout << "Du hast gewonnen!"; return 0; }Lässt sich dann z.B. um eine Begrenzung der Versuche ergänzen.
mfg.
-
Hmm - das gepostete Programm ist zwar ganz lustig (naja^^) aber ich dachte da schon an eher größere Spiele, wie eben z.b. etwas mit einer hintergrund fläche und nicht mit diesem nervigen Schwarzen Hintergrund...^^ Wo ist denn das was du meinst elsi? Ich find das nicht. Und wenn ich es doch richtig verstanden habe, dann versteh ich nicht was ich in dem Forum soll...
-
Gibt hier leider kein Edit als unregestrierter...
Ich würde gerne ne spielfigur haben (darf auch ein quadrat sein) und ein level (darf auch aus 2 quadraten bestehen, dem boden und dem hintergrun).
Oder ist das zu kompliziert?
-
Hallo
zum Thema GUI lies erstmal hier die Antwort auf die erste Frage (und die andern auch gleich am besten)
Elise meint natürlich dieses Forum. Dort erfährst du wie du in der Konsole Farben und Positionen setzt, um deine Ausgabe zu gestalten. Insbesondere sollst du dir diesen Thread anschauen.
bis bald
akari
-
Du stellst interessante Anforderungen. Beginne mit TicTacToe. Das ist noch überschaubar. In der Konsole kannst Du das mit der IDE Dev-C++ laufen lassen. Vergiss bloß nicht, libconio.a dazu zu linken!
Es gibt auch ein TicTacToe von Jeff Prosise in Kap. 3 seines Buchs über die MFC, falls Du MSVC++ incl. MFC zur Verfügung hast./* * Program: Tic-Tac-Toe * Author: Joshua Dean Thompson * Last Update: June 30, 2000 * Language: C * Compiler: DJGPP * File: t3.c * Description: main source file */ /* angepasst an Dev-C++ von Dr. Erhard Henkes */ #include <conio2.h> //Linken mit libconio.a nicht vergessen! #include <cstdlib> #include <ctime> using namespace std; /* Global Data */ static char Board[3][3] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }; static char Icons[3] = { ' ', 'X', 'O' }; /* Function Prototypes */ int wanna_play( void ); void init_board( void ); void init_screen( void ); void update_board( void ); int check_if_winner(); void get_player_move( int player ); void get_computer_move( int player ); void play_game( int gametype ); void print_credits( void ); int main( void ); int main() { int gametype, ans; if( ( gametype = wanna_play() ) != 0 ) { do { init_board(); init_screen(); play_game( gametype ); gotoxy( 3, 24 ); cputs( "Do you wish to play again? y/n: " ); do { ans = getch(); if( ans == 'y' || ans == 'n' ) break; } while(1); gotoxy( 3, 24 ); cputs( " " ); } while( ans == 'y' ); } print_credits(); return 0; } /* Tell user about game and see if they want to play */ int wanna_play( void ) { int ans; clrscr(); cputs( "+-----------------------------------------------------------------------------+\r\n" ); cputs( "| WELCOME |\r\n" ); cputs( "+-----------------------------------------------------------------------------+\r\n\r\n" ); cputs( " Welcome to the classic game of Tic-Tac-Toe. This simple\r\n"); cputs( "game is played on a 3 x 3 grid. Each player takes a choice of\r\n"); cputs( "either X or O, then using only wit, try to creat a simple line\r\n"); cputs( "of 3 of their respective symbol. Whoever does so first, wins.\r\n\r\n"); cputs( " If all the squares are filled, but no lines created, a draw\r\n"); cputs( "is the result. The game switches between who goes first, X or O.\r\n\r\n"); cputs( "What kind of game do you wish to play?\r\n"); cputs( "(0) None - just quit\r\n"); cputs( "(1) Player vs Player - Play against another human\r\n" ); cputs( "(2) Player vs Computer - Play against a beatable computer\r\n\r\n" ); cputs( "Enter Choice:" ); do { ans = getch(); switch( ans ) { case '0': return 0; case '1': return 1; case '2': return 2; } } while(1); } /* Initialize Board to Default Values */ void init_board( void ) { int i, j; for( i = 0; i < 3; i++ ) for( j = 0; j < 3; j++ ) Board[i][j] = 0; } /* Set up Screen to show Game Board */ void init_screen( void ) { clrscr(); cputs( "+-----------------------------------------------------------------------------+\r\n" ); cputs( "| TIC-TAC-TOE |\r\n" ); cputs( "+-----------------------------------------------------------------------------+\r\n\r\n" ); cputs( " C O L U M N S\r\n" ); cputs( " [1] [2] [3]\r\n" ); cputs( " +-----+-----+-----+\r\n" ); cputs( " | | | |\r\n" ); cputs( " [1]| | | |\r\n" ); cputs( " R | | | |\r\n" ); cputs( " +-----+-----+-----+\r\n" ); cputs( " O | | | |\r\n" ); cputs( " [2]| | | |\r\n" ); cputs( " W | | | |\r\n" ); cputs( " +-----+-----+-----+\r\n" ); cputs( " S | | | |\r\n" ); cputs( " [3]| | | |\r\n" ); cputs( " | | | |\r\n" ); cputs( " +-----+-----+-----+\r\n\r\n" ); cputs( "+-----------------------------------------------------------------------------+\r\n" ); cputs( "| |\r\n" ); cputs( "| |\r\n" ); cputs( "| |\r\n" ); cputs( "+-----------------------------------------------------------------------------+" ); } /* Update the screen with the current Board */ void update_board( void ) { gotoxy( 34, 9 ); putch( Board[0][0] ); gotoxy( 40, 9 ); putch( Board[0][1] ); gotoxy( 46, 9 ); putch( Board[0][2] ); gotoxy( 34, 13 ); putch( Board[1][0] ); gotoxy( 40, 13 ); putch( Board[1][1] ); gotoxy( 46, 13 ); putch( Board[1][2] ); gotoxy( 34, 17 ); putch( Board[2][0] ); gotoxy( 40, 17 ); putch( Board[2][1] ); gotoxy( 46, 17 ); putch( Board[2][2] ); gotoxy( 3, 23 ); } /* Check if any player has completed a line */ int check_if_winner() { int i, k, j; for( i = 1; i < 3; i++ ) { for( k = 0; k < 3; k++ ) if( Board[k][0] == Icons[i] && Board[k][1] == Icons[i] && Board[k][2] == Icons[i] ) return i; for( j = 0; j < 3; j++ ) if( Board[0][j] == Icons[i] && Board[1][j] == Icons[i] && Board[2][j] == Icons[i] ) return i; if( Board[0][0] == Icons[i] && Board[1][1] == Icons[i] && Board[2][2] == Icons[i] ) return i; if( Board[0][2] == Icons[i] && Board[1][1] == Icons[i] && Board[2][0] == Icons[i] ) return i; } return 0; } /* Get a user's move */ void get_player_move( int player ) { int row, column; do { gotoxy( 3, 23 ); cprintf( "Player[%i]: Enter Row Number: ", player ); do { row = getch(); } while( row < '0' || row > '4' ); gotoxy( 3, 23 ); cprintf( "Player[%i]: Enter Column Number: ", player ); do { column = getch(); } while( column < '0' || column > '4' ); gotoxy( 3, 23 ); cputs( " " ); } while( Board[ row - 0x31 ][ column - 0x31 ] != 0 ); Board[ row - 0x31 ][ column - 0x31 ] = Icons[player]; } /* Get the computer's move */ void get_computer_move( int player ) { int row, column; srand(unsigned(time(0))); do { row = rand() % 3; column = rand() % 3; } while( Board[ row ][ column ] != 0 ); Board[ row ][ column ] = Icons[player]; } /* Play the game */ void play_game( int gametype ) { int i = 0, player = 1; while( i < 9 ) { get_player_move(player); update_board(); if( player == 1 ) player = 2; else player = 1; gotoxy( 3, 23 ); i++; if( check_if_winner() == 1 ) { cputs ( "Player 1 (X) Wins! " ); return; } else if( check_if_winner() == 2 ) { cputs ( "Player 2 (0) Wins! " ); return; } if( gametype == 2 ) { get_computer_move( player ); i++; update_board(); if( player == 1 ) player = 2; else player = 1; if( check_if_winner() == 1 ) { cputs ( "Player 1 (X) Wins! " ); return; } else if( check_if_winner() == 2 ) { cputs ( "Player 2 (0) Wins! " ); return; } } } } /* Print the game credits */ void print_credits( void ) { clrscr(); cputs( "+-----------------------------------------------------------------------------+\r\n" ); cputs( "| CREDITS |\r\n" ); cputs( "+-----------------------------------------------------------------------------+\r\n\r\n" ); cputs( "Author: Joshua Dean Thompson\r\n" ); cputs( "Inspiration: SHARIQ HASEEB's Tic-Tac-Toe\r\n\r\n" ); cputs( "For original game and code by Shariq Haseeb goto:\r\n" ); cputs( "www.planet-source-code.com\r\n\r\n"); cputs( "Thank you for using this program, hope you had fun.\r\n" ); cputs( "Send comments, questions, etc to: fd72@msn.com\r\n" ); }Wenn Dir das auch noch zu poplig ist, musst Du zur Spieleprogrammierung wechseln. Da gibt es z.B. Ultris von U.Kaiser mit entsprechendem Buch: http://www.fh-info.de/Spiele/Ultris/ultris.html
-
Thx.
-
Pls.
-
such doch einfach mal bei Google nach Open Source und Quelltexten und so.
Hier "Das Abenteuerspiel"
bin ich gerade drauf gestoßen.http://www.geocities.com/SiliconValley/Pines/6622/
vielleicht hilft es dir ja auch weiter.
-
Für Minesweeper brauchst du keine buttons du fragst einfach zwei Zahlen ab die die Koordinaten darstellen...dabei musst du dir immer den grundgedanken vorhalten dass ein Character einen "pixel" oder ein bild auf dem spielfeld darstellt...
z.B.:123456789 1######### "M".......Mine 2# # "x".......Fragliches Feld 3# M # " ".......keine Mine 4# # 5# x # 6# # 7#########Geben Sie die X-Koordinate des nächsten Feldes ein:
cin>>x
und dann das gleiche für y...und schon gehts...Auf diese weise kannst du dir auch Dungeons bauen und stellst die Spielfigur als ein "T" oder "S" oder dgl. dar....
Selbst wenn du Quellcode für Mario oder ähnliches bekommst und dir den ansiehst wirst du nichts damit anfangen können wenn du die ganzen Funktionen nicht kennst....
Schnapp dir am Besten ein Buch und klopf alle Beispiele in den Rechner rein...
eben "Learning by Doing"MfG Kuldren
-
Hi C++-Anfänger,
hab keine Angst vor dem Programmieren!
Quelltext ansehen und verstehen ist eine sehr gute Möglichkeit Programmieren zu verstehen und zu erlernen, aber irgendwann mußt auch mal selber Hand anlegen.Ich selber habe meine ersten Schritte in C++ unternommen, in dem ich das Spiel Tetris auf die DOS-Konole gebracht habe. Alles ausschließlich mit Schleifen, if-Abfragen und ein paar Arrays und statt Grafik für die Klötzchen, habe ich Zeichen genommen (beispielsweise das "*")
Um die Koordinaten auf der DOS-Ebene anzusprechen, hat mir die freie Headerdatei "coniox" geholfen - mußt mal googeln, weiß nicht mehr, wo ich die her hatte.
Wenn Du immer die ersten Seiten Deiner langweiligen Bücher gelesen hast, dann müßtest Du sowas eigentlich hinbekommen. Und wenns beim ersten Mal nicht funzt - Du machst es für Dich, also setz Dich nicht zu sehr unter Druck.
Nur: Anfangen mußt irgendwann mal.
Wobei die genannten Spiele "TicTacTo", etc. ebenfalls gute Übungen sind.Wenn Du allerdings SuperMario programmieren willst, solltest Du unbedingt zunächst bei TicTacTo sicher sein

Gruß
Arlecchino
-
Will ich auch noch was simples dazu sagen:
Such dir ein anderes Buch! ^^Ich hatte auch schon mal so ein Buch gekauft, da wurde einfach nur Trocken runtergeplappert, da lernt man meiner Meinung nach gar nix. Das ist einfach nur tot langweilig. Aber es gibt ja soooo viele Bücher zu C++ und Co. Ich habe zum Beispiel C++ mit "Visual C++ 6 Schritt für Schritt" von Chuck Sphar von der Microsoft Press (natürlich übersetzt ^^) gelernt. Da programmiert man Schritt für Schritt eine Art von Paint. Mit jedem Kapitel kommt eigentlich fast immer etwas neuen Code hinzu. Gibt aber auch andere Bücher die sowas haben, musst halt nur ein wenig suchen, dir Informationen zu den Bücher holen, oder sie halt nicht nur im Inet anschauen, sondern im Buchladen

Grüssli