Entwickler-Ecke

Sonstiges (Delphi) - Programm will nur manchmal wie ich.


Silence - Sa 25.03.06 10:50
Titel: Programm will nur manchmal wie ich.

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:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    XML: TXMLDocument;
    Label1: TLabel;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure Panel2Click(Sender: TObject);
    procedure Panel3Click(Sender: TObject);
    procedure Panel4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure zuweisen;
  end;

var
  Form1: TForm1;
  i: integer;

implementation


{$R *.dfm}

procedure zufall();
begin
 (* Generieren der Zufallszahl*)
 randomize;
 i := random(4);
end;

procedure TForm1.zuweisen();
begin
 form1.panel1.Visible := true;
 form1.panel2.Visible := true;
 form1.panel3.Visible := true;
 form1.panel4.Visible := true;
 form1.Panel1.Color := clBtnFace;
 form1.Panel2.Color := clBtnFace;
 form1.Panel3.Color := clBtnFace;
 form1.Panel4.Color := clBtnFace;
 form1.label1.Caption := form1.xml.DocumentElement.ChildNodes['content'].ChildNodes['frage' + inttostr(i)].ChildNodes['frage'].Text;
 form1.panel1.Caption := form1.xml.DocumentElement.ChildNodes['content'].ChildNodes['frage' + inttostr(i)].ChildNodes['a'].Text;
 form1.panel2.Caption := form1.xml.DocumentElement.ChildNodes['content'].ChildNodes['frage' + inttostr(i)].ChildNodes['b'].Text;
 form1.panel3.Caption := form1.xml.DocumentElement.ChildNodes['content'].ChildNodes['frage' + inttostr(i)].ChildNodes['c'].Text;
 form1.panel4.Caption := form1.XML.DocumentElement.ChildNodes['content'].ChildNodes['frage' + inttostr(i)].ChildNodes['d'].Text;
end;

procedure init();
begin
 form1.xml.FileName := 'data.xml';
 form1.xml.LoadFromFile(form1.xml.FileName);
 form1.xml.Active := true;
 form1.Caption := form1.xml.DocumentElement.ChildNodes['settings'].childnodes['title'].Text;
 form1.panel1.Visible := true;
 form1.panel2.Visible := true;
 form1.panel3.Visible := true;
 form1.panel4.Visible := true;
 end;

procedure falsch();
begin
 showmessage('Mäp, Verloren')
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 init();
 zufall();
 zuweisen();

 form1.Caption:= xml.DocumentElement.ChildNodes['settings'].childnodes['title'].Text;
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'a' THEN
begin
 panel1.Color := clgreen;

 panel1.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 showmessage('Pengo! Richtig!');

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'b' THEN
begin
 panel2.Color := clgreen;
 panel1.Color := clred;
 panel2.Visible := true;
 panel1.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'c' THEN
begin
 panel3.Color := clgreen;
 panel1.Color := clred;

 panel3.Visible := true;
 panel2.Visible := false;
 panel1.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'd' THEN
begin
 panel4.Color := clgreen;
 panel1.Color := clred;

 panel4.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel1.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
end;

procedure TForm1.Panel2Click(Sender: TObject);
begin
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'a' THEN
begin
 panel1.Color := clgreen;
 panel2.Color := clred;

 panel1.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'b' THEN
begin
 panel2.Color := clgreen;

 panel2.Visible := true;
 panel1.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 showmessage('Pengo! Richtig!');

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'c' THEN
begin
 panel3.Color := clgreen;
 panel2.Color := clred;

 panel3.Visible := true;
 panel2.Visible := false;
 panel1.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'd' THEN
begin
 panel4.Color := clgreen;
 panel2.Color := clred;

 panel4.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel1.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
end;

procedure TForm1.Panel3Click(Sender: TObject);
begin
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'a' THEN
begin
 panel1.Color := clgreen;
 panel3.Color := clred;

 panel1.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'b' THEN
begin
 panel2.Color := clgreen;
 panel3.Color := clred;

 panel2.Visible := true;
 panel1.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'c' THEN
begin
 panel3.Color := clgreen;

 panel3.Visible := true;
 panel2.Visible := false;
 panel1.Visible := false;
 panel4.Visible := false;

 showmessage('Pengo! Richtig!');

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'd' THEN
begin
 panel4.Color := clgreen;
 panel3.Color := clred;

 panel4.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel1.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
end;

procedure TForm1.Panel4Click(Sender: TObject);
begin
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'a' THEN
begin
 panel1.Color := clgreen;
 panel4.Color := clred;

 panel1.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'b' THEN
begin
 panel2.Color := clgreen;
 panel4.Color := clred;

 panel2.Visible := true;
 panel1.Visible := false;
 panel3.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'c' THEN
begin
 panel3.Color := clgreen;
 panel4.Color := clred;

 panel3.Visible := true;
 panel2.Visible := false;
 panel1.Visible := false;
 panel4.Visible := false;

 falsch();

 zufall();
 zuweisen();
end;
if xml.DocumentElement.ChildNodes['content'].ChildNodes['frage'+ inttostr(i)].ChildNodes['richtig'].Text = 'd' THEN
begin
 panel4.Color := clgreen;

 panel4.Visible := true;
 panel2.Visible := false;
 panel3.Visible := false;
 panel1.Visible := false;

 showmessage('Pengo! Richtig!');

 zufall();
 zuweisen();
end;
end;

end.


oben steht der sourcecode. es geht um ein spiel das wer wird millionär nachgebaut ist. das problem ist das die erste frage immer richtig ausgelesen wird und die nächsten werden manchmal richtig ausgelesen. ich finde aber den fehler nicht. kann mir jemand behilflich sein?

Silence


Marc. - Sa 25.03.06 10:56

hallo,

nach dem fehler habe ich noch nicht gesucht, aber gewöhne dir bitte an mit "with xy do" zu arbeiten, damit sparst du dir eine ganze menge arbeit!

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
begin
 with form1 do
  panel1.Visible := true;
  panel2.Visible := true;
  panel3.Visible := true;
  panel4.Visible := true;
  .... 
end;


so nun schau ich mal, ob ich einen fehler entdecke :P


cuejo - Fr 21.04.06 21:57

Also ich habs jetzt zwar nur überflogen, aber mir ist direkt mal aufgefallen, dass du die zufall() mehrmals aufrufst. Das darfst du aber nicht, weil in dieser procedure Randomize; drinsteht. Randomize; darf man nur einmal aufrufen um, da mit random() sonst keine Zufallszahlen erzeugt werden. Am besten du schreibst Randomize; einfach in FormCreate. :wink:


Amiga-Fan - Sa 22.04.06 01:04

Zitat:
Programm will nur manchmal wie ich.


glaub mir, das ist völlig normal. :lol: