Entwickler-Ecke
Sonstiges (Delphi) - Programm für Psychologische Untersuchung
DarkJiN - Di 23.11.10 16:21
Titel: Programm für Psychologische Untersuchung
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:
Delphi-Quelltext
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 - Di 23.11.10 17:12
1. :welcome:
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?
DarkJiN - 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 - 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. ;)
Martok - Mi 24.11.10 02:40
Xion hat folgendes geschrieben : |
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. ;) |
Wenn mich meine UI-Design-Weisheiten hier nicht verlassen, sogar bis zu 1/3sec. Aber das weiß ein "professioneller" Psychologe sicher besser als ich ;)
Finde ich aber auch beachtenswert: wenn die VPN merkt, dass der Gewinn gefaked ist, dürfte die Sache ziemlich nach hinten losgehen. Möglicherweise nicht alles gewinnen lassen, sondern 3/4 läufen oder so?
EDIT&PS: aber ich will natürlich in keine Messmethoden reinreden, nur so Gedanken ;)
Xion - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!