LogoSpiro
Physik mit Maple | Virtuelles Klassenzimmer | CAS-Server Baden-Württemberg | Computer-Algebra | Maple

Suche: Start! Erweitert!


Willkommen
   Tipps zum Einstieg
   Pilotprojekte
   Impressum

News
   Das Maple-Buch
   Moderne Physik mit Maple

Mein Forum

Registrieren

Ansichten: Alle | nach Datum | Kategorisiert | nach Autor | mit Auszug

Beitrag von Marc Bauer (Isolde-Kurz-Gymnasium Reutlingen),
erstellt am Mo, 18.06.2001 21:37 (Geändert: Mo, 18.06.2001 21:37)

Schlagwort: Delphi | Klassenstufe: 12

Lotto spielen - Informatik Referat 12/2

Dateianhang: LOTTOFINAL3.EXE (368640 Byte)

Dateiname: lottofinal3.exe
Dateigröße: 360 KB
Name: Marc Bauer
Schule: Isolde-Kurz-Gymnasium
Klasse: GK Informatik 12.2
Datum: 18.06.2001
Fach: Informatik
Thema: Lotto spielen
Stichwörter: Informatik, Delphi, Lotto, Spiel, random, Zufallszahlen

Kurzbeschreibung: Dieses Programm simuliert in mehreren Varianten ein Lottospiel, der Spieler kann Zahlen tippen oder den Computer selbständig spielen lassen.
Dazu kann man natürlich Geld verdienen oder gewinnen!


Anleitung:

Der Lottomat
Version 0.5
-Marc Bauer(mail@marc-bauer.de)-

Mit diesem mit Delphi erstellten Programm lassen sich beliebig viele Runden Lotto spielen,
ohne dabei reales Geld zu verlieren, die Gewinne fallen dementsprechend klein aus.

Der Spieler beginnt mit einem Standartguthaben von 300 DM. Dieses kann immer wieder durch einen Klick auf
<restart> zurückgesetzt werden.

In die 6 Kästen auf der linken Seite kann der Spieler seine Werte eingeben. Mit <Computer Tippt> kann man das SChicksal in die Hände des Computers legen, der dann für einen 6 Zufalszahlen bestimmt.

Durch einen Klick auf <Lotto spielen> kann der Spieler dann sein Glück versuchen.

Dabei werden vom Computer 6 Zufallszahlen generiert (random) die dann mit den getippten Zahlen verglichen werden.
Die Anzahl der übereinstimmenden Zahlen wird dann in der entsprechenden Box ausgegeben.

Das Programm verhindert zudem, dass der Computer zweimal die gleiche Zahl aussucht.

In der rechten Listbox werden die vom Computer geratenen Zahlen ausgegeben. Außerdem das Vermögen, und es wird zudemnoch angezeigt, ob und wieviel man jeweils Gewinn oder Verlust gemacht hat.


Das Guthaben wird zudem noch in einem speraten Feld angezeigt.


Die Gewinnverteilung:

0 Richtige = -30 DM
1 Richtige = +- 0 DM
2 Richtige = + 30 DM
3 Richtige = + 50 DM
4 Richtige = Vermögen * 2
5 Richtige = Vermögen * 10
6 Richtige = Vermögen * 20


Wenn das Geld ausgeht, kann man zwar wie im Richtigen leben nochein wenig für sich selbst tippen, und es gibt natürlich auch weiterhin neue Lottozahlen, aber das Vermögen geht nicht ins Negative und man kann auch nichts gewinnen.



Im untereren Teil hat man die Möglichkeit, den Computer für einen eine beliebige Anzahl von Runden spielen zu lassen. Dabei werden für jede Runde 6 neue Zahlen getippt. Diese muss in der SpinEdit Box eingetragen werden. Außerdem ist es notwendig, die Checkbox zu aktivieren, da sonst gar nichts funktioniert.

Mit dieser autmatischen Spielweise kann man schnell viel Geld verdienen (mein Rekord: 15725550 DM)


Klickt man auf <Statistik>, erhält man ein Fenster, in dem jeder Spielzug protokolliert ist.


Der letzte Button: <Zurücksetzen>, setzt alle Werte wieder auf 0 und löscht die Listboxen.


Viel Spass beim Spielen!






-------


Delphi Quellcode


unit lottoreferat2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
ListBox1: TListBox;
Edit8: TEdit;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit7: TEdit;
Label9: TLabel;
Button4: TButton;
Button5: TButton;
SpinEdit1: TSpinEdit;
Label10: TLabel;
CheckBox1: TCheckBox;
ListBox2: TListBox;
Button6: TButton;
Edit9: TEdit;
Edit10: TEdit;
Button7: TButton;
Label11: TLabel;
Label12: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);

private
{ Private-Deklarationen }
public
Tipp,RichtigWert,Zahl : Array[1..6] of Integer;
AnzRichtig:Integer;
Wert : Array[1..6] of String;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,w,passend, v,valt,vneu, vdiff : integer;


doppelt, dummy : boolean;

begin
randomize;
// Im nächsten Teil werden die 6 getippten Zahlen eingelesen.
begin


v:=strtoint(edit8.text);
//edit9.text:=inttostr(v);

valt:=v;

Tipp[1]:=StrToInt(Edit1.text);
Tipp[2]:=StrToInt(Edit2.text);
Tipp[3]:=StrToInt(Edit3.text);
Tipp[4]:=StrToInt(Edit4.text);
Tipp[5]:=StrToInt(Edit5.text);
Tipp[6]:=StrToInt(Edit6.text);
end;
// Nun Soll der Computer per Zufallszahl (Random) 6 Zahlen ermitteln.

//Zahl[1] := Random(49)+1;
for i := 1 to 6 do
begin
repeat
Zahl[i] := Random(49)+1; // Erstellen der 5 restl. Zufallszahlen

//Nun verhindern wir, das 2 gleiche Zahlen ermittelt werden.

doppelt:=false;
for j :=1 to i-1 do
begin
if Zahl[i] = Zahl[j] then doppelt := true;
//Wenn zwei Zahlen doppelt sind, wird die boolsche Variable auf true gesetzt.
end;
Until not doppelt;
// Solange wir gesucht, bis keine doppelten mehr vorkommen, also doppelt:=false!
end;

//Nun vergleichen wir getippte und erstellte zahlen

AnzRichtig:= 0; //Anzahl der richtigen Zahlen ersteinmal auf 0 setzen
for i:=1 to 6 do
begin
for j:=1 to 6 do
begin
//Nun vergleichen wir ob die jeweils getippte Zahl zu den Computer Zahlen passt.
if Zahl[i] = Tipp[j] then AnzRichtig := AnzRichtig + 1;
edit7.text:=inttostr(AnzRichtig);
end;



end;

begin // hier wird nun berechnet, wiviel der Spieler gewinnt oder verliert.
passend:=AnzRichtig;
if (v-30) >= 0 then
begin
if passend = 0 then v := v-30;
if passend = 1 then v := v;
if passend = 2 then v := v+30;
if passend = 3 then v := v+50;
if passend = 4 then v := v*2;
if passend = 5 then v := v*10;
if passend = 6 then v := v*20;
vneu:=v;

edit10.text:=inttostr(vneu);
if vneu > valt then dummy:=true else dummy:=false;
if dummy=true then vdiff:=vneu-valt else vdiff:=valt-vneu;

if v <= 0 then ShowMessage('Verloren, Spieler pleite gegengen');
if passend = 6 then ShowMessage('Jackpot, 20-facher Gewinn!!!');


if v < 0 then v:=0;
edit8.text:=inttostr(v);
end;

end;
begin //Und nun die ganzen Ergebnisse in einer Listbox ausgegeben.

listbox1.items.clear;
listbox1.items.add('Gespielte Zahlen' );

listbox1.items.add(' ');
end;


for i:=1 to 6 do
begin
listbox1.items.add(inttostr(Zahl[i]));
end;
listbox1.items.add(inttostr(vdiff));
listbox1.items.add(' ');
listbox1.items.add('Guthaben' );
listbox1.items.add(inttostr(v));
// Hier wird mit dem Dummy Boolean und der differenz von vneu und valt Gewinn oder Verlust ausgerechnet!
listbox1.items.add(' ');
if dummy=true then listbox1.items.add('Gewinn:') else listbox1.items.add('Verloren:');
listbox1.items.add(inttostr(vdiff));


end;





procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button3Click(Sender: TObject);
var w : integer; //Der Restart Button, hier kann man sich wieder
begin // Spielguthaben verschaffen.
w:=300;
edit8.text:=inttostr(w);
end;

procedure TForm1.Button4Click(Sender: TObject);

var
tippzahl: Array[1..6] of Integer;
i ,j :Integer;
dual : boolean;
begin

for i:=1 to 6 do
begin
repeat
tippzahl[i]:=Random(49); //Hier wird wie oben mit random eine Zufallszahl generiert.
dual:=false; //Diese wird dann an die Edit Komponenten wieder übergeben
for j := 1 to i-1 do
begin
if tippzahl[i] = tippzahl[j] then dual:=true;
end;
Until not dual;
end;
Edit1.text:=floattostr(tippzahl[1]);
Edit2.text:=floattostr(tippzahl[2]);
Edit3.text:=floattostr(tippzahl[3]);
Edit4.text:=floattostr(tippzahl[4]);
Edit5.text:=floattostr(tippzahl[5]);
Edit6.text:=floattostr(tippzahl[6]);
end;


procedure TForm1.Button5Click(Sender: TObject);
var dummy2,i,vi,counter,j,va,vn: integer;
crash, dummy : boolean;


begin

begin
if checkbox1.checked then dummy2:=spinedit1.value; crash:=true;

for i:=1 to dummy2 do
begin
if crash = true then
Button1.click;
Button4.click;
end;
counter:=0;
vi:=strtoint(edit8.text);
vn:=strtoint(edit10.text);
va:=strtoint(edit9.text);
//if vn > va then dummy:=true else dummy:=false;
//if dummy=true then vdi:=vn-va else vdi:=va-vn;
begin
listbox2.items.clear;
repeat
counter:=counter+1;
listbox2.items.add(inttostr(counter));
listbox2.items.add('Gespielte Zahlen' );

listbox2.items.add(' ');
for j:=1 to 6 do
begin
listbox2.items.add(inttostr(Zahl[j]));
end;
listbox2.items.add(' ');
listbox2.items.add('Guthaben' );
listbox2.items.add(inttostr(vi));
// Hier wird mit dem Dummy Boolean und der differenz von vneu und valt Gewinn oder Verlust ausgerechnet!
listbox2.items.add(' ');
//if dummy=true then listbox2.items.add('Gewinn:') else listbox2.items.add('Verloren:');
//listbox2.items.add(inttostr(vdi));
until counter=dummy2;

end;


end;


end;


procedure TForm1.Button6Click(Sender: TObject);
begin
listbox2.visible:=true;
end;

procedure TForm1.Button7Click(Sender: TObject);
var Ed1,Ed2,Ed3,Ed4,Ed5,Ed6,Ed7,Ed8,Ed9,Ed10:string;


begin
listbox1.Items.clear;
listbox2.Items.clear;
listbox2.visible:=false;
spinedit1.value:=0;
Ed1:='0'; Edit1.text:=string(Ed1);
Ed2:='0'; Edit2.text:=string(Ed2);
Ed3:='0'; Edit3.text:=string(Ed3);
Ed4:='0'; Edit4.text:=string(Ed4);
Ed5:='0'; Edit5.text:=string(Ed5);
Ed6:='0'; Edit6.text:=string(Ed6);
Ed7:='0'; Edit7.text:=string(Ed7);
Ed8:='0'; Edit8.text:=string(Ed8);
Ed9:='0'; Edit9.text:=string(Ed9);
Ed10:='0'; Edit10.text:=string(Ed10);
checkbox1.checked:=false;
end;

end.
#########################################



Lotto spielen - Informatik Referat 12/2









lottofinal3.exe