Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Glücksspiel

Diskussion: Glücksspiel im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige Hallo, folgende Aufgabe stammt von mastermix252,Fragen etc bitte an ihn. Zitat: Aufgabe: Es soll ein Programm geschrieben werden das ...

Antwort
Alt 18.01.07, 15:47   #1 (permalink)
 
Registriert seit: 23.05.05
Xalon Leistung: Facit NTK
Xalon eine Nachricht über ICQ schicken
Likes: 0
Standard Glücksspiel

Anzeige

Hallo,
folgende Aufgabe stammt von mastermix252,Fragen etc bitte an ihn.

Zitat:
Aufgabe:

Es soll ein Programm geschrieben werden das einen einfachen Spielautomaten der nach dejem Tipp nur Zahlen zwischen 1 und 3 zieht. Bei einen richtigen Tipp soll sich ein Kapital um einen Einsatz erhöhrem, bei einem Falschen Tipp verringern.

Folgende Bedingungen hat das Programm zu erfüllen
- nach Übernahme der Werte durch den OK Button können diese erst wieder geändertwerden, wie ein Spieler kein Kapital mehr hat oder das Spiel mit aufhören beendet wurde

- die unterschiedlichen Positionen der sich bewegenden Labels sind in Arrays zu speichern (Zahlen 1-3 siehe Bild)

- Überprüfung der Eingegebenen Werte "Startkapital" und "Einsatz". Darf auf jeden fall nicht unter NULL sein

- die Zeitlupe und deren Eingaben "Faktor" muss nicht implementiert werden

mastermix252
Happy Coding
Xalon
Angehängte Grafiken
Dateityp: jpg Bandit.jpg (13,4 KB, 1016x aufgerufen)
Xalon ist offline   Mit Zitat antworten
Alt 18.01.07, 17:55   #2 (permalink)
 
Registriert seit: 17.01.07
Oli_G Leistung: Facit NTK
Oli_G eine Nachricht über ICQ schicken
Likes: 0
Standard

HiHo, bin neu!
Hab das Glückspiel in in c++ geschrieben.

Quelltext   

#include <cstdlib>
#include <iostream>

using namespace std;

int kapital, einsatz,tipp,zahl;
char nochmal;

void
game()
{

cout<<"\n\nIhr Tipp >";
cin>>tipp;
if(tipp == 1 || tipp == 2 | tipp == 3) {
zahl = rand() % 3 +1;
cout<<"Gewinnzahl: "<<zahl;
if (tipp == zahl) {
cout<<" RICHTIG! +"<<einsatz;
kapital += einsatz;
}
else {
cout<<" FALSCH! -"<<einsatz;
kapital -= einsatz;
}
cout<<"\nKapital: "<<kapital;
} else {
cout<<"\nNur Zahlen 1-3 eingeben!!";
game();
}
}

void
start ()
{
cout<<"\n\nStartkapital >";
cin>>kapital;
cout<<"\nEinstatz pro Spiel >";
cin>>einsatz;
while(kapital > 0) game();
cout<<"\nLeider verloren nochmal? [J/N]";
cin>>nochmal;
cout<<endl<<endl;
if (nochmal == 'j'){
start();
}
}

int main(int argc, char *argv[])
{
cout<<"$$$ Gluecksspiel $$$";
start();
return EXIT_SUCCESS;
}


Im Anhang ist die exe!

Mfg OLI G.

edit: den Fehler der von Lesco endeckt wurde, korrigiert.
Angehängte Dateien
Dateityp: rar Gluecksspielv2.rar (104,2 KB, 93x aufgerufen)
Oli_G ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 18.01.07, 18:18   #3 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Code:
zzahl = gzahlen[rand() % 2];
rand() % 2 liefert nur 0 oder 1, daher kommen bei dir nur 1 und 2 als Gewinnzahlen in Frage. Desweiteren kann man sich das Array sparen und die Zahl so berechnen:
Code:
zahl = rand() % 3 + 1;
Lesco ist offline   Mit Zitat antworten
Alt 18.01.07, 18:22   #4 (permalink)
 
Registriert seit: 17.01.07
Oli_G Leistung: Facit NTK
Oli_G eine Nachricht über ICQ schicken
Likes: 0
Standard

hi
hatte ich mir zu erst auch gedacht aber in der Aufgabe stand:
"- die unterschiedlichen Positionen der sich bewegenden Labels sind in Arrays zu speichern (Zahlen 1-3 siehe Bild)"

OLI G
Oli_G ist offline   Mit Zitat antworten
Alt 18.01.07, 19:19   #5 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von Oli_G
hi
hatte ich mir zu erst auch gedacht aber in der Aufgabe stand:
"- die unterschiedlichen Positionen der sich bewegenden Labels sind in Arrays zu speichern (Zahlen 1-3 siehe Bild)"

OLI G
Naja, dass ist ja darauf bezogen, wenn man das graphisch mit Bewegung usw. macht, nicht jedoch bei deiner Implementierung, so wie ich das verstehe.
Lesco ist offline   Mit Zitat antworten
Alt 25.01.07, 16:38   #6 (permalink)
 
Registriert seit: 18.01.07
amkoroew Leistung: Facit NTK
Likes: 0
Standard

Hoe
Hab des Programm mal grafisch programmiert (net ganz genau wie vorgegeben aber doch recht ähnlich).

Quellcode:   


Code:
//---------------------------------------------------------------------------
#define _USE_OLD_RW_STL
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

void play(void);
void anzeige(void);

class Spiel
{
private: int Startkapital;
int Kapital;
int Einsatz;
int Richtig;
int Falsch;
int Gewinn;
int Verlust;
int Zeitlupe;
bool Risiko;

public: Spiel(void);
~Spiel(void);
void setStartkapital(int);
void setKapital(int);
void setEinsatz(int);
void setRichtig(int);
void setFalsch(int);
void setGewinn(int);
void setVerlust(int);
void setZeitlupe(int);
void setRisiko(bool);
int getStartkapital(void);
int getKapital(void);
int getEinsatz(void);
int getRichtig(void);
int getFalsch(void);
int getGewinn(void);
int getVerlust(void);
int getZeitlupe(void);
bool getRisiko(void);
}spiel;

Spiel::Spiel ()
{
Startkapital = 0;
Kapital = 0;
Einsatz = 0;
Richtig = 0;
Falsch = 0;
Gewinn = 0;
Verlust = 0;
Zeitlupe = 1;
Risiko = false;
}

Spiel::~Spiel ()
{
}

void Spiel::setStartkapital(int Startkapital)
{
if (Startkapital > 10)
{
this->Startkapital = Startkapital;
}
else
{
this->Startkapital = 10;
Form1->LabeledEdit1->Text = 10;
}
if (Startkapital > 1000)
{
this->Startkapital = 1000;
Form1->LabeledEdit1->Text = 1000;
}
}

void Spiel::setKapital(int Kapital)
{
if (Kapital > 0)
{
this->Kapital = Kapital;
}
else
{
this->Kapital = 0;
}
}

void Spiel::setEinsatz(int Einsatz)
{
if (Einsatz <= this->Kapital)
{
this->Einsatz = Einsatz;
}
else
{
this->Einsatz = this->Kapital;
Form1->LabeledEdit2->Text = this->Einsatz;
}
}

void Spiel::setRichtig(int Richtig)
{
this->Richtig = Richtig;
}

void Spiel::setFalsch(int Falsch)
{
this->Falsch = Falsch;
}

void Spiel::setGewinn(int Gewinn)
{
this->Gewinn = Gewinn;
}

void Spiel::setVerlust(int Verlust)
{
this->Verlust = Verlust;
}

void Spiel::setZeitlupe(int Zeitlupe)
{
if (Zeitlupe > 0)
{
this->Zeitlupe = Zeitlupe;
}
else
{
this->Zeitlupe = 1;
}
if (Zeitlupe > 5)
{
this->Zeitlupe = 5;
}
}

void Spiel::setRisiko(bool Risiko)
{
if(Risiko)
{
this->Risiko = true;
}
else
{
this->Risiko = false;
}
}

int Spiel::getStartkapital(void)
{
return this->Startkapital;
}

int Spiel::getKapital(void)
{
return this->Kapital;
}

int Spiel::getEinsatz(void)
{
return this->Einsatz;
}

int Spiel::getRichtig(void)
{
return this->Richtig;
}

int Spiel::getFalsch(void)
{
return this->Falsch;
}

int Spiel::getGewinn(void)
{
return this->Gewinn;
}

int Spiel::getVerlust(void)
{
return this->Verlust;
}

int Spiel::getZeitlupe(void)
{
return this->Zeitlupe;
}

bool Spiel::getRisiko(void)
{
return this->Risiko;
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
anzeige();
}
//---------------------------------------------------------------------------



void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(LabeledEdit1->Enabled == true)
{
spiel.setStartkapital(StrToInt(LabeledEdit1->Text));
LabeledEdit1->Enabled = false;
spiel.setKapital(spiel.getStartkapital());
Label1->Caption = spiel.getKapital();
}
spiel.setEinsatz(StrToInt(LabeledEdit2->Text));
spiel.setRisiko(CheckBox1->Checked);
spiel.setZeitlupe(StrToInt(LabeledEdit3->Text));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Text = 1;
play();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
Edit1->Text = 2;
play();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit1->Text = 3;
play();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{
exit(1);
}
//---------------------------------------------------------------------------


void play(void)
{
int i, right_one, tipp;
Form1->Label2->Top = 64;
Form1->Label3->Top = -32;
Form1->Label4->Top = 160;
tipp = StrToInt(Form1->Edit1->Text);
randomize();
right_one = random(3)+1;
for(i=0;i<1416+right_one*24;i++)
{
Form1->Label2->Top += 4;
Form1->Label3->Top += 4;
Form1->Label4->Top += 4;
Sleep(i/100/spiel.getZeitlupe());
if(Form1->Label2->Top >= 208)
{
Form1->Label2->Top = -80;
}
if(Form1->Label3->Top >= 208)
{
Form1->Label3->Top = -80;
}
if(Form1->Label4->Top >= 208)
{
Form1->Label4->Top = -80;
}
Application->ProcessMessages();
}
for(i=0;i<10;i++)
{
if(i%2)
{
Form1->Label5->Visible = false;
}
else
{
Form1->Label5->Visible = true;
}
Sleep(200);
Application->ProcessMessages();
}
if(tipp == right_one)
{
if(spiel.getRisiko())
{
spiel.setKapital(spiel.getKapital()+spiel.getEinsatz()*2);
}
else
{
spiel.setKapital(spiel.getKapital()+spiel.getEinsatz());
}
spiel.setRichtig(spiel.getRichtig()+1);
}
else
{
if(spiel.getRisiko())
{
spiel.setKapital(spiel.getKapital()-spiel.getEinsatz()*3);
}
else
{
spiel.setKapital(spiel.getKapital()-spiel.getEinsatz());
}
spiel.setFalsch(spiel.getFalsch()+1);
}
anzeige();
if(!spiel.getKapital())
{
Form1->Label1->Caption = "Game Over";
Form1->LabeledEdit1->Enabled = true;
spiel.setStartkapital(0);
spiel.setKapital(0);
spiel.setEinsatz(0);
spiel.setRichtig(0);
spiel.setFalsch(0);
spiel.setGewinn(0);
spiel.setVerlust(0);
spiel.setZeitlupe(0);
spiel.setRisiko(false);
}
}


void anzeige(void)
{
Form1->LabeledEdit4->Text = spiel.getRichtig();
Form1->LabeledEdit5->Text = spiel.getGewinn();
Form1->LabeledEdit6->Text = spiel.getVerlust();
Form1->LabeledEdit7->Text = spiel.getFalsch();
Form1->Label1->Caption = spiel.getKapital();
if(spiel.getEinsatz() > spiel.getKapital())
{
spiel.setEinsatz(spiel.getEinsatz());
}
}


Und hier noch die exe:

edit by ivegotmail: fehlerhaften bb code entfernt
Angehängte Dateien
Dateityp: rar tipp.rar (202,3 KB, 67x aufgerufen)
amkoroew ist offline   Mit Zitat antworten
Alt 16.04.07, 13:37   #7 (permalink)
 
Registriert seit: 16.04.07
D31~$0u1 Leistung: Facit NTK
D31~$0u1 eine Nachricht über ICQ schicken
Likes: 0
Standard

Bin neu hier.
Also dann gerade mal: Tag an alle.


Also, ich hab mir mal ne Lösung in Blitzbasic ausgedacht.


Hier könnt ihr euch die Demo downloaden, ums auszuführen:
http://blitzbasic.de/download.htm


BlitzBasic Lösung   

;D31~$0u1

AppTitle "Glücksspiel"
Graphics 640,480, 32,1 ;Grafik-Modus, um alles lesen zu können.
Print "Willkommen beim Glücksspiel!"
Print "Wie hoch soll dein Startkapital sein?"
SKapital = Input()
Print "Gut. Dein Startkapital beträgt " + SKapital + " Euro." ;Kapital abfragen. -> Spielereingabe.
Print ""

.againES
Print "Wie hoch soll dein dauerhafter Einsatz sein?"
Print ""
Einsatz = Input()
If Einsatz > SKapital Then Print "Dein Einsatz ist höher, als dein Kapital. Bitte niedrigeren Einsatz eingeben." Goto againES ;Zu hoch?
If Einsatz < SKapital Then Goto AgainGAME


.AgainGAME
While (SKapital > 0) ;Noch genug Geld vorhanden?
SeedRnd MilliSecs()
Zufall = Rand(1,3)
Print ""
Print ""
Print "Nun rate bitte die zufällige Zahl, die 1, 2 oder 3 sein kann."
Zahl = Input("Rate die Zahl bitte jetzt: ";)
If Zahl <> Zufall Then Print "Nein, das war falsch. Richtig war: " + Zufall + ". - " + Einsatz + " Euro." SKapital = SKapital - Einsatz
If Zahl = Zufall Then Print "Ja, das war richtig. + " + Einsatz + " Euro." SKapital = SKapital + Einsatz
Print "Dein Kapital beträgt momentan " + SKapital + " Euro."
Wend

Print ""
Print ""
Print "Du hast kein Geld mehr, und somit verloren." ; Spieler hat verloren (Zu wenig Geld)
Print "Bitte spiel bald wieder!"
WaitKey ;Auf Tastendruck warten.
End


Hier noch die C++ Lösung:


C++ Lösung   

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
using namespace std;



int main(int nNumberofArgs, char* pszArgs[])
{
againGAME:
int SKapital, SEinsatz, Zufall, Zahl;
char ANTW;



cout << "Willkommen beim Gluecksspiel." << endl;
cout << endl;
cout << "Wie hoch soll dein Startkapital sein?" << endl;
cin >> SKapital;
cout << " Dein Startkapital betraegt nun " << SKapital << " Euro" << endl;
cout << endl;


againES:
cout << "Wie hoch soll dein dauerhafter Einsatz sein?" << endl;
cin >> SEinsatz;
if (SEinsatz > SKapital)
{
cout << "Dein Einsatz ist hoeher als dein Kapital. Bitte niedrigeren " << endl;
cout << "Einsatz eingeben." << endl;
goto againES;
}
else
{
goto Game;
}


Game:
for (; SKapital > 0;)
{
srand(time(NULL));
Zufall = rand() % 3 + 1;

cout << endl;
cout << endl;
cout << endl;
cout << "Nun rate bitte die zufaellige Zahl, die 1, 2 oder 3 sein kann." << endl;
cin >> Zahl;

if (Zahl != Zufall)
{
cout << "Nein, das war leider falsch. Richtig war: " << Zufall << endl;
cout << "- " << SEinsatz << " Euro" << endl;
SKapital = SKapital - SEinsatz;
}
else
{
cout << "Ja, das war richtig." << endl;
cout << "+ " << SEinsatz << " Euro" << endl;
SKapital = SKapital + SEinsatz;
cout << endl;
}

cout << " Dein Kapital betraegt im Moment " << SKapital << " Euro" << endl;
cout << endl;
system("PAUSE");
}

cout << endl;
cout << endl;
cout << " Du hast kein Geld mehr und somit verloren." << endl;
cout << endl;
falsch:
cout << "Möchtest du nochmal spielen? (j/n)" << endl;
cin >> ANTW;

switch(ANTW)
{
case 'j':
cout << endl;
cout << endl;
goto againGAME;
break;

case 'n':
goto exit;
break;

default:
cout << "Bitte j oder n eingeben." << endl;
goto falsch;
break;
}

exit:
cout << "Bis bald." << endl;
system("PAUSE");
}
Angehängte Dateien
Dateityp: rar Glücksspiel.rar (826 Bytes, 22x aufgerufen)
Dateityp: rar GlücksspielC++.rar (249,3 KB, 30x aufgerufen)
D31~$0u1 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Glücksspiel
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



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