• Slotmachine Teil 1 in – ISO C++

      0 comments

    Was der Engel kann, kann ich schon lang 😉

    Ok wir haben die gleichen Rahmenbedingungen, wie für den „engelhaften“ Weg. Auch ist in dem Fall die Entwicklungsumgebung Visual Studio 2010.

    Als Projekt nutzen wir eine Win32 Konsolenanwendung und auch hier ist uns Visual Studio behilflich und erstellt das Grundgerüst für unser Anwendung.

    #include "stdafx.h"
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	return 0;
    }

    Anders wie im in der C++/CLI Version müssen wir noch ein Header includieren, damit wir schöne Ausgaben in die Konsole schreiben können … das Leben ist so ungerecht… Gut includieren wir den Header iostream

    Der IOStream Header erlaubt uns das wir mit cout unsere Ausgaben schön an die Konsole rausschicken können, ohnedas wir groß mit Klammern und so arbeiten müssen. fügen wir gleich noch unsere Variablen ein 4 Integer, davon eine gleich mit 100 initialisieren und ein Char …. so erledigt

    #include "stdafx.h"
    #include <iostream>
    int _tmain(int argc, _TCHAR* argv[])
    {
            int punkte = 100;	
    	int i, j, k;		
    	char wahl;
    	return 0;
    }

    Was wir auf unserem teuflischen Weg nicht brauchen ist eine Variable für den Random, in Visual Studio kommt die Funktion mit der stdafx.h mit, ansonsten benötigt man den Header stdlib.h

    #include "stdafx.h"
    #include <iostream>
    int _tmain(int argc, _TCHAR* argv[])
    {
            int punkte = 100;	
    	int i, j, k;		
    	char wahl;
    	i = (rand() % 10) + 1;
    	j = (rand() % 10) + 1;
    	k = (rand() % 10) + 1;		
    	return 0;
    }

    Ein weiteren Unterschied zu dem engelhaften Weg ist die Angabe der Grenzen für die Randomfunktion. Während man unter CLI sowohl die untere als auch obere Grenze genau angeben kann, so läuft die Randomfunktion unter ISO von 0 bis zu einer oberen Grenze, dabei ist die Obere Grenze in den Bereich nicht mit eingeschlossen, d.h. mit anderen Worten wie ermitteln eine Zahl zwischen 0 und 9 und verschieben danach den Wertebereich um ein Zähler nach oben.

    Den, je nach dem wie uns Lady Luck oder der Spieler mag, endlosen Spielablauf erreichen wir auch mit einer Do – While schleife. So spielt der Benutzer mindestens einmal (keinmal wäre ja auch doof)
    Abbruchbedingungen sind wie vorgegeben weiter spielen solange man noch Punkte hat in dem man „j“ drückt.
    Mit noch ein wenig Künstlerischen ausschmücken in Text und Form haben wir schon ein fast fertiges exemplar.
    Das cin ist dann für uns so nett und liest den Benutzerinput ein und übergibt es an unsere wahl Variable, die wir dann in unserer While Anweisung auswerten

    #include "stdafx.h"
    #include <iostream>
    int _tmain(int argc, _TCHAR* argv[])
    {
       int punkte = 100;	
       int i, j, k;		
       char wahl;
       do
       {
          i = (rand() % 10) + 1;
          j = (rand() % 10) + 1;
          k = (rand() % 10) + 1;
          cout << "Position1 hat den Wert: " << i << endl;
          cout << "Position2 hat den Wert: " << j << endl;
          cout << "Position3 hat den Wert: " << k << endl;
          cout << "Sie haben jetzt " << punkte <<endl;
          cout<< " Punkte" << endl;
          cout <<"Wollen sie noch eine Runde spielen?" << endl;
          cin >> wahl;
       } while (wahl == 'j' && punkte != 0);
       cout << "Ihr Spiel wurde beendet."<<endl;
       cout << "Ihre Punktzahl ist: " << punkte << endl;	
       return 0;
    }

    Fehlt nur noch der Gewinn und der Verlust … *hust* Einsatz natürlich, wir verlieren ja nicht und der Vergleich ob wir gewonnen haben und bitte schön fertig ist die erste Slot in Iso C++

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
       int punkte = 100;	
       int i, j, k;		
       char wahl;			
       do
       {
    	i = (rand() % 10) + 1;
    	j = (rand() % 10) + 1;
    	k = (rand() % 10) + 1;
    	if (i == j && j == k)
    	{
                punkte += 5;
    	    cout << "Position1 hat den Wert: " << i << endl;
                cout << "Position2 hat den Wert: " << j << endl;
                cout << "Position3 hat den Wert: " << k << endl;
                cout << "Sie haben jetzt " << punkte <<endl;
                cout<< " Punkte" << endl;
    	}
    	else
    	{
    	   punkte -= 5;
    	   cout << "Position1 hat den Wert: " << i << endl;
               cout << "Position2 hat den Wert: " << j << endl;
               cout << "Position3 hat den Wert: " << k << endl;
               cout << "Sie haben jetzt " << punkte <<endl;
               cout<< " Punkte" << endl;
    	}
          cout <<"Wollen sie noch eine Runde spielen?" << endl;
          cout << "Druecken sie fuer JA die Taste j und" << endl;
          cout << "bestaetigen sie ihre Auswahl mit Enter" << endl;
          cin >> wahl;
         } while (wahl == 'j' && punkte != 0);
         cout << "Ihr Spiel wurde beendet."<<endl;
         cout << "Ihre Punktzahl ist: " << punkte << endl;	
    	return 0;
    }

    Gar nicht so schwer oder? Naja vielleicht wird Version 2 eine größere Herrausforderung.

    Eure littleDevil

  • Slotmaschine Teil 1

      0 comments

    Als Entwicklungsumgebung nutze ich das Visual Studio 2010 von Microsoft (auch wenn ich mich mit dem fehlenden IntelliSense schwer abfinden kann). Als .NET Frameworks habe ich bis zu Version 4 alle installiert. Die Entwicklung selber funktioniert auch bei ältern Versionen ohne Probleme.

    Als Projekt nutze ich eine CLR – Konsolenanwendung.
    Das Grundgerüst wird automatisch von der Entwicklungsumgebung erstellt.

    #include "stdafx.h"
     
    using namespace System;
     
    int main(array<System::String ^> ^args)
    {
        Console::WriteLine(L"Hello World");
        return 0;
    }

    Die „Hello World“ Konsolenausgabe werden wir nachher für unsere Zwecke nutzen, somit brauchen wir sie nicht zu löschen.

    Wir benötigen folgenden Variablen

    Punkte – Eine Ganzzahl, die wir mit dem Wert 100 vorbelegen
    3 Slots – 3 Ganzzahlen die mit Zufallswerten zwischen 1 und 10 „gefüttert“ werden
    Random – Das Randomobjekt, das uns die Zufallswerte ermittelt
    Wahl – Wir lesen eine Tastatureingabe ein um das Spiel am laufen zu halten

    Das Programm sollte nun so aussehen

    #include "stdafx.h"
     
    using namespace System;
     
    int main(array<System::String ^> ^args)
    {
        Int32 punkte=100;
        Int32 slot1, slot2, slot3;
        Random random;
        char wahl;
        Console::WriteLine(L"Hello World");
        return 0;
    }

    Für das Erzeugen von zufälligen Werten und die Belegung unserer Slots mit diesen Werten muss zuerst das Randomobjekt initialisiert werden.
    Nachdem dies geschehen ist weisen wir einfach mit random->Next(1,10); den einzelnen Slots die Zufallswerte hinzu.

    Damit man auch etwas im Konsolenprogramm sieht führen wir nehmen den Ausgaben unserer Slots , noch eine Abfrage ein ob wir eine weitere Runde spielen wollen.

    #include "stdafx.h"
     
    using namespace System;
     
    int main(array<System::String ^> ^args)
    {
        Int32 punkte=100;
        Int32 slot1, slot2, slot3;
        Random ^random= gcnew Random();
        char wahl;
        slot1= random->Next(1,10);
        slot2= random->Next(1,10);
        slot3= random->Next(1,10);
        Console::WriteLine("Position1 hat den wert: {0}",slot1);
        Console::WriteLine("Position2 hat den wert: {0}",slot2);
        Console::WriteLine("Position3 hat den wert: {0}",slot3);
        Console::WriteLine("Wollen sie noch eine Runde spielen?");
        Console::WriteLine("Drücken sie für JA die Taste j");  
        Console::WriteLine("und mit enter bestätigen");
        wahl=Convert::ToChar(Console::ReadLine());
        return 0;
    }

    Nun ist es fast geschafft. Nun benötigen wir nur noch eine Schleife, die es uns ermöglicht weitere runden zu spielen. Ebenso muss noch der Einsatz abgezogen und gegebenfalls der Gewinn zu unseren Punkten hinzugerechnet werden.

    #include "stdafx.h"
     
    using namespace System;
     
    int main(array<System::String ^> ^args)
    {
      Int32 punkte=100;
      Int32 slot1, slot2, slot3;
      Random ^random= gcnew Random();
      char wahl;
      do
      {
        slot1= random->Next(1,10);
        slot2=random->Next(1,10);
        slot3=random->Next(1,10);
        if (slot1==slot2 && slot2==slot3)
       {
         punkte+=5;
         Console::WriteLine("Slot1 hat den wert: {0}",slot1);
         Console::WriteLine("Slot2 hat den wert: {0}",slot2);
         Console::WriteLine("Slot3 hat den wert: {0}",slot3);
         Console::WriteLine("Sie haben jetzt {0} Punkte",punkte);
        }
        else
        {
          punkte-=5;
          Console::WriteLine("Slot1 hat den wert: {0}",slot1);
          Console::WriteLine("Slot2 hat den wert: {0}",slot2);
          Console::WriteLine("Slot3 hat den wert: {0}",slot3);
          Console::WriteLine("Sie haben jetzt {0} Punkte",punkte);
         }
        Console::WriteLine("Wollen sie noch eine Runde spielen?");
        Console::WriteLine("Drücken sie für JA die Taste j" );
        Console::WriteLine("und mit enter bestätigen");
        wahl=Convert::ToChar(Console::ReadLine());
      }
      while(wahl=='j' && punkte!=0);
      return 0;
    }

    Et Voíla die erste Version der Slotmaschine ist fertig.

    Viel Spaß mit dem 1. Teil

    littleAngel

  • Sie nannten ihn einarmiger Bandit – Rahmenbedingungen Teil 1

      0 comments

    Wer kennt sie nicht die bunten blinkenden Maschinen in den Casino – die Slotmaschinen oder auch einarmigen Banditen. Selbst von Onlinespiele Entwickler wird er für „Zwischendurch“- Spiele genutzt und durch seinem Einfachen Konzept eignet er sich gut zum Erlernen und Weiterentwickeln von Sprachelementen.

    Ok stecken wir uns ein paar Rahmenbedingen ab

    • Konsolenprogramm
    • Punkte am Programmstart: 100
    • Jede Runde kostet 5 Punkte Einsatz,
    • bei einem Gewinn erhält man 10 Punkte (mit dem Einsatz verrechnet sind es 5 ;))
    • es gibt 3 Slots, die aus Zufallszahlen zwischen 1 und 10 ermittelt werden
    • der Spieler entscheidet nach jeder Rund ob er noch einmal spielen will oder die Punktzahl 0 ist

    Um Frust zu vermeiden wählt klare Rahmenbedingungen. Erweiterungen können später immer noch eingebaut werden.

  • Lernprojekte ?!?

      0 comments

    Ich weiß noch, als ich damals anfing mich mit C++/Cli zu beschäftigen, dass ich immer gleich von 0 auf 100 wollte und ziemlich schnell gefrustet meine Umwelt genervt hatte, weil ich meine Ideen nicht sofort umsetzen konnte.

    Auch heute treibt mich meine Ungeduld in den Wahnsinn. Nun habe ich aus purem Zufall einige meiner Projekte gefunden, die ich damals für mich entwickelt hatte.

    Gern möchte ich euch daran teilhaben lassen und euch diese „Lernprojekte“ präsentieren. Dem Einen oder Anderen wird der ein oder andere Schritt sicher primitiv und lächerlich vorkommen, aber lernen heißt durch Aha- Effekte dinge zu begreifen und nicht in Frust zu Verzeifeln. Und wenn sie auch nur einem weiterhelfen, so haben sie ihr Ziel erreicht

    Viel Spaß mit den Lernprojektreihen

    Eure Sandra Schmidt