|
|
C/C++ Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
// SFML statisch linken(Projekteinstellungen->C++->Präprozessor) #define SFML_STATIC // Includes #include <SFML/Graphics.hpp> #include <SFML/Window.hpp> // Libs dem Projekt hinzufügen(Projekteinstellungen->Linker->Eingabe) #pragma comment(lib, "sfml-system-s-d.lib") #pragma comment(lib, "sfml-main-d.lib") #pragma comment(lib, "sfml-graphics-s-d.lib") #pragma comment(lib, "sfml-window-s-d.lib") int main() { struct S_Feld { bool Besetzt; bool Kreuz; bool Kreis; }; bool Spieler=true; bool An=true; const int Hoehe=3; const int Breite=3; int x=0; int y=0; S_Feld Karte[Hoehe][Breite]; //SFML Game initialisieren sf::RenderWindow Game(sf::VideoMode(800, 600, 32), "Tick-Tack-Toe"); //SFML Event Handler erstellen sf::Event Event; //Create Image Buffer Background sf::Image ImageB; if(!ImageB.LoadFromFile("Background.png")) return EXIT_FAILURE; //Create Image Buffer "O" sf::Image ImageO; if(!ImageO.LoadFromFile("Kreis.png")) return EXIT_FAILURE; //Create Image Buffer "X" sf::Image ImageX; if(!ImageX.LoadFromFile("Kreuz.png")) return EXIT_FAILURE; //Create Image Buffer Markierung sf::Image ImageM; if(!ImageM.LoadFromFile("Markierung.png")) return EXIT_FAILURE; //SetColorKey ImageO ImageO.CreateMaskFromColor(sf::Color(255, 0, 0), 0); //SetColorKey ImageX ImageX.CreateMaskFromColor(sf::Color(255, 0, 0), 0); //SetColorKey ImageM ImageM.CreateMaskFromColor(sf::Color(255, 0, 0), 0); //SpriteB sf::Sprite SpriteB; SpriteB.SetImage(ImageB); //SpriteO sf::Sprite SpriteO; SpriteO.SetImage(ImageO); //SpriteX sf::Sprite SpriteX; SpriteX.SetImage(ImageX); //SpriteM sf::Sprite SpriteM; SpriteM.SetImage(ImageM); //SpriteM2 sf::Sprite SpriteM2; SpriteM2.SetImage(ImageM); //SpriteM3 sf::Sprite SpriteM3; SpriteM3.SetImage(ImageM); //SpriteM4 sf::Sprite SpriteM4; SpriteM4.SetImage(ImageM); //SpriteM5 sf::Sprite SpriteM5; SpriteM5.SetImage(ImageM); //SpriteM6 sf::Sprite SpriteM6; SpriteM6.SetImage(ImageM); //SpriteM7 sf::Sprite SpriteM7; SpriteM7.SetImage(ImageM); //SpriteM8 sf::Sprite SpriteM8; SpriteM8.SetImage(ImageM); //SpriteM9 sf::Sprite SpriteM9; SpriteM9.SetImage(ImageM); //SetPosition SpriteB SpriteB.SetPosition (0, 0); //SetPosition SpriteO SpriteO.SetPosition (17, 2); //SetPosition SpriteX SpriteO.SetPosition (17, 2); //SetPosition SpriteM SpriteM.SetPosition (118, 72); //SetPosition SpriteM2 SpriteM2.SetPosition(391, 72); //SetPosition SpriteM3 SpriteM3.SetPosition(635, 72); //SetPosition SpriteM4 SpriteM4.SetPosition(116, 275); //SetPosition SpriteM5 SpriteM5.SetPosition(388, 275); //SetPosition SpriteM6 SpriteM6.SetPosition(626, 275); //SetPosition SpriteM7 SpriteM7.SetPosition(122, 473); //SetPosition SpriteM8 SpriteM8.SetPosition(391, 473); //SetPosition SpriteM9 SpriteM9.SetPosition(636, 473); while(Game.IsOpened()) { //Event Handler Loop while(Game.GetEvent(Event)) { if(Event.Type == sf::Event::Closed) Game.Close(); } |
|
|
C/C++ Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
//Game Clear Game.Clear(); //Sprites Zeichnen Game.Draw(SpriteB); //Wenn "An" true ist dann.... if(An==true) { //Wenn Position 1x1 dann.... if((y==1)&&(x==1)) { //Diesen Sprite zeichnen Game.Draw(SpriteM); } //Wenn Position 1x2 dann.... else if((y==1)&&(x==2)) { //Diesen Sprite zeichnen Game.Draw(SpriteM2); } //Wenn Position 1x3 dann.... else if((y==1)&&(x==3)) { //Diesen Sprite zeichnen Game.Draw(SpriteM3); } //Wenn Position 2x1 dann.... else if((y==2)&&(x==1)) { //Diesen Sprite zeichnen Game.Draw(SpriteM4); } //Wenn Position 2x2 dann.... else if((y==2)&&(x==2)) { //Diesen Sprite zeichnen Game.Draw(SpriteM5); } //Wenn Position 2x3 dann.... else if((y==2)&&(x==3)) { //Diesen Sprite zeichnen Game.Draw(SpriteM6); } //Wenn Position 3x1 dann.... else if((y==3)&&(x==1)) { //Diesen Sprite zeichnen Game.Draw(SpriteM7); } //Wenn Position 3x2 dann.... else if((y==3)&&(x==2)) { //Diesen Sprite zeichnen Game.Draw(SpriteM8); } //Last but not least: Wenn Position 3x3 dann.... else { //Diesen Sprite zeichnen Game.Draw(SpriteM9); } sf::Sleep(550); } else { Game.Clear(); Game.Draw(SpriteB); sf::Sleep(245); An=true; } //Kreuze rendern //Schleife für y for(int y=0; y<Hoehe; y++) { //Schleife für x for(int x=0; x<Breite; x++) { //Wenn irgendwo auf der Karte "Kreuz=true" ist dann.... if(Karte[x][y].Kreuz==true) { //Ein Kreuz zeichnen Game.Draw(SpriteX); } } } //Kreise rendern //Schleife für y for(int y=0; y<Hoehe; y++) { //Schleife für x for(int x=0; x<Breite; x++) { //Wenn irgendwo auf der Karte "Kreis=true" ist dann.... if(Karte[x][y].Kreis==true) { //Einen Kreis zeichnen Game.Draw(SpriteO); } } } Game.Display(); } |
Dazu hätte ich auch noch eine Frage: Wie kann man Sprites wieder verstecken?
Ich verstehe nicht was daran Falsch sein soll..... Zerbreche mir schon seit gestern Abend (23:47Uhr) den Kopf....
Soll ich mal den ganzen Code posten? Wenn ja, sagt mir bitte nur was verursacht, dass das Fenster weiß bleibt. (Es sollte eigentlich Schwarz sein wenn es nicht geleert wird, oder? *denk*) Bitte nichts anderes, dass ich das hätte besser lösen können, oder das anders machen können.... Ich möchte mich selbst um diese Sachen kümmern, mich interessiert hierbei wirklich nur wieso das Fenster weiß bleibt.
Also, wer den vollständigen Code benötigt, fragt hier dann mal nach, ich schreibe ihn sofort hier nieder.
Hay! Hab jetzt einmal Tic-Tac-Toe geschrieben. Sprites werden zugeordnet zum jeweiligem Image.
Ich habe alles Mögliche ab gecheckt und mir ist aufgefallen, dass nicht mal in die Key-Abfragen gegangen wird, denn man kann das ganze, so hab ich es eingegeben, nicht mit Escape schließen.
Somit ist zu schließen das er irgendwo in einer Schleife hängt.
Vielleicht könnt ihr etwas finden.... Hier ist der Anfang meines Codes bis zur Event-Schleife. Anzumerken ist, das man den "Schließen"-Button nicht klicken kann. Er muss irgendwo hängen, noch vor der Event-Schleife.... Aber wo?
)
)
|
|
C/C++ Quellcode |
1 2 |
sf::RenderWindow Game(sf::VideoMode(800, 600, 32), "Tick-Tack-Toe"); Game.SetFramerateLimit(50); |