Autor |
Beitrag |
DarkJiN
Hält's aus hier
Beiträge: 2
|
Verfasst: Di 23.11.10 16:21
Hallo liebe community,
Ich muss zugeben ich bin nicht wirklich vom Fach, also Porgrammieren und Informatik, aber ich benötige für eien psychologische Untersuchung ein Programm.
Folgendes hab ich zusammenbekommen:
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: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) E_rad1: TEdit; E_rad2: TEdit; E_rad3: TEdit; B_start: TButton; B_ende: TButton; Kontostand: TLabel; E_konto: TEdit; RB_1: TRadioButton; RB_2: TRadioButton; RB_3: TRadioButton; RB_4: TRadioButton; RB_5: TRadioButton; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; B_einwurf: TButton; Ti_raeder: TTimer; Ti_spiel1: TTimer; B_stopp1: TButton; B_stopp3: TButton; B_stopp2: TButton; Ti_raeder2: TTimer; Ti_raeder3: TTimer; procedure B_endeClick(Sender: TObject); procedure Ti_raederTimer(Sender: TObject); procedure B_startClick(Sender: TObject); procedure Ti_spiel1Timer(Sender: TObject); procedure B_einwurfClick(Sender: TObject); procedure B_stopp1Click(Sender: TObject); procedure Ti_raeder2Timer(Sender: TObject); procedure Ti_raeder3Timer(Sender: TObject); procedure B_stopp2Click(Sender: TObject); procedure B_stopp3Click(Sender: TObject); private
procedure werte_aus; public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.B_endeClick(Sender: TObject); begin close end;
procedure TForm1.Ti_raederTimer(Sender: TObject); var z : byte; begin z:=random(5) ; if z = 0 then e_rad1.text := '*' ELSE e_RAD1.text := IntToStr (Z) ; END;
procedure TForm1.B_startClick(Sender: TObject); begin E_konto.text := IntToStr (StrToInt (E_konto.Text)-1); Ti_spiel1.Enabled := true; Ti_raeder2.Enabled := true; Ti_raeder3.Enabled := true; Ti_raeder.Enabled := true; B_start.Enabled := false; RB_1.Checked := false; RB_2.Checked := false; RB_3.Checked := false; RB_4.Checked := false; RB_5.Checked := false; end;
procedure TForm1.Ti_spiel1Timer(Sender: TObject); begin Ti_raeder.Enabled := false; Ti_raeder2.enabled := false ; Ti_raEder3.enabled := false ; Ti_spiel1.Enabled := false; werte_aus; if E_konto.text <> '0' then B_start.Enabled := true; end;
procedure TForm1.werte_aus; var r1, r2, r3 :string; gewinn :byte; begin r1 := E_rad1.Text; r2 := E_rad2.Text; r3 := E_rad3.Text; if (r1 = '*') and (r2='*') and (r3 ='*') then begin gewinn := 8; RB_1.checked := true end else if (r1 = r2) and (r2 = r3) then begin gewinn := 4; RB_2.checked := true end else if ((r1 = '*') and (r2 = '*')) or ((r1 = '*') and (r3 = '*')) or ((r2 = '*') and (r3 = '*')) then begin gewinn := 3; RB_3.Checked := true end else if r2 = '*' then begin gewinn := 2; RB_4.Checked := true end else begin gewinn := 0; RB_5.Checked := true end; E_konto.Text := IntToStr(StrToInt(E_konto.Text) + gewinn) end; procedure TForm1.B_einwurfClick(Sender: TObject); begin E_konto.text := IntToStr (StrToInt (E_konto.Text)+1); end;
procedure TForm1.B_stopp1Click(Sender: TObject); begin Ti_raeder.Enabled := false; B_start.Enabled := false; werte_aus;
end;
procedure TForm1.Ti_raeder2Timer(Sender: TObject); var z : byte ; begin z:=random(5) ; if z = 0 then e_rad2.text := '*' ELSE e_RAD2.text := IntToStr (Z) ; end;
procedure TForm1.Ti_raeder3Timer(Sender: TObject); var z : byte ; begin z:=random(5) ;
if z = 0 then e_rad3.text := '*' ELSE e_RAD3.text := IntToStr (Z) ; end;
procedure TForm1.B_stopp2Click(Sender: TObject); begin Ti_raeder2.Enabled := false; B_start.Enabled := false; werte_aus;
end;
procedure TForm1.B_stopp3Click(Sender: TObject); begin Ti_raeder3.Enabled := false; B_start.Enabled := true; werte_aus;
end;
end. |
das soll ich Spiele Automat sein. Immo funktioniert dieser einwandfrei. Ich will aber das jedes mal dasselbe Ergebnis rauskommt. Jede VPN soll genau 2 Euro gewinnen.
Ich hab versucht einige Zeilen zu ändern unzwar sind 2 Sterne nötig um 2 Euro zu gewinnen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Ti_raederTimer(Sender: TObject); var z : byte; begin z:= 0 ; if z = 0 then e_rad1.text := '*' ELSE e_RAD1.text := IntToStr (Z) ; END; |
genau dasselbe bei
Delphi-Quelltext 1:
| procedure TForm1.Ti_raeder2Timer(Sender: TObject); |
bei procedure TForm1.Ti_raeder2Timer(Sender: TObject); hab ich nur z:= 5 geändert.
Problem jetzt erscheint sobald ich auf start drücke sofort "*"
Ich möchte, dass die VPN trotzdem noch denken sie würden wirklich spielen.
Außerdem habe ich versucht z:= random (5) ;
beizubehalten und die Prozedur so zu ändern :
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Ti_raederTimer(Sender: TObject); var z : byte; begin z:= random (5) ; if z = 0 then e_rad1.text := '*' ELSE e_RAD1.text := * ; END; |
auch das klappt leider nicht..
Könnt mir jemand helfen?
danke
Moderiert von Martok: Delphi-Tags gesetzt
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Di 23.11.10 17:12
1.
2. Fasse mal deinen Code in [delphi ] ... [/delphi] Tags ein. Dann erkennt man auch was
3. Das ist ziemlich viel Code und keiner hat Lust sich das alles erstmal durchzudenken.  Kannst du so nen ungefähren Abriss geben, was das Programm macht? Bzw. was die Versuchsperson machen soll?
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
DarkJiN 
Hält's aus hier
Beiträge: 2
|
Verfasst: Di 23.11.10 23:22
ja klar.
Das ist ein Glückspiel Automat.
Man drückt auf start, zahlen sollen durchlaufen udn für jedes feld gibts nen stopp knopf.
Wie son einarmiger bandit.
Der Witz ist jetzt, dass jede VPN 2 Euro gewinnt. Immer, aber denken soll sie, spiele wirklich und hätte gewonnen.
Dann solln Popup auftauchen in dem gefragt wird ob sie den Gewinn von 2 Euro spenden wollen oder behalten wollen.
Das kann ich aber auch dannach persöhnlich fragen.
Wichtig ist, dass jede VPN 2 Euro gewinnt und sie denkt es wäre wirklich gespielt worden.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 24.11.10 00:57
Achja, jetzt durchblick ich auch den Code. Da du mit random arbeitest, ist das ganz günstig. Wenn du auf Stop drückst, muss er das Feld einfach auf * setzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.B_stopp1Click(Sender: TObject); begin Ti_raeder.Enabled := false; B_start.Enabled := false; E_rad1.Text:='*'; werte_aus; end; |
Um es nicht ganz so auffällig zu machen könnte man auch zwischen dem "auf * setzen" und dem "werte aus" auch noch eine kurze Zeitspanne (1/4sec oder so) einbauen, damit die Versuchsperson dann auch wirklich sieht, achja, da ist ja der * den ich jetzt angehalten hab. 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 24.11.10 02:40
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 24.11.10 10:38
Wenn du per Timer gleichmäßig umschaltest, hast du natürlich ein großes Problem.
Die Versuchsperson klickt auf Stop und knapp vorher hat es auf was andres umgeschaltet. Wenn jetzt plötzlich wieder ein Stern da steht dann merkt jeder, dass das gefaked ist  Am besten du verstellst das Intervall des Timer nach jeder Umstellung, dann hat die Versuchsperson so keine Chance was zu merken.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
|