Ducati: making mechanics out of riders since 1946
paste eens wat van de sourcecode, want hier worden we noggal wijs van.Op vrijdag 11 januari 2002 12:58 schreef MayaFreak het volgende:
Ik heb een probleem met het laten zien van plaatjes.
De applet staat op http://oege.lb.hva.nl/pret2001/1062/producten/race/Spel.html
De plaatjes worden soms wel en soms niet laten zien. Dat verschild per computer en browser.
Ik weet dat er al meer zoiets op GoT gepost is maar daar werd ik niet echt wijzer uit.
haal het probleem naar het forum toe, en niet andersom
dus post aub de code waarmee je een plaatje laad..
op welke versies JVM draait het wel en op welke niet?
op welke versies JVM draait het wel en op welke niet?
Het is iig gemaakt in JDK1.2.2 en op welke het draait weet ik niet. Hoe kan je kijken welke versie het is :-?
Ik zal zo ff de code posten.
Ik zal zo ff de code posten.
Ducati: making mechanics out of riders since 1946
ik moet jullie waarschuwen, het is vrij lang
en dit is 1 klasse. Venster Info en Menu zijn panels. Ik denk dat het probleem ligt bij de switch die de plaatjes laat zien.
Of het ligt misschien aan de JVM.
Of het ligt misschien aan de JVM.
code:
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
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
| /**
* Title: Spel
* Description: Deze klasse is de applet van het spel
* Copyright: Copyright (c) Vavoom
* Company: Vavoom
* @author
* @version 1.0
* @data 15.11.01
*/
package racedooreuropa;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Spel extends Applet implements MouseListener, KeyListener{
private String naam;
private int niveau;
private Menu vensterMenu; //Paneel
private Info vensterInfo; //Paneel
//Variablen voor de methode toonNieuw
private Label lblNaam;
private Label lblLeeftijd;
private TextField txtNaam;
private TextField txtLeeftijd;
private Color labelKleur;
private Font f;
private Button cmdStart;
//Variablen voor de vragen
private Vragen vragen;
private Label lblVraag;
private Label lblAntwoordA;
private Label lblAntwoordB;
private Label lblAntwoordC;
private Label lblAntwoordD;
private Label lblAntwoord; //In dit label komt te staan of het antwoord goed of fout is.
private Label lblHint;
private int indexVraag; //Wat voor index heeft de huidige vraag?
private int[] gesteldeVragen; //Welke vragen zijn er al gesteld?
private Button cmdAntwoordA;
private Button cmdAntwoordB;
private Button cmdAntwoordC;
private Button cmdAntwoordD;
private Button cmdVolgendeVraag;
private Button cmdHintVerder;
private int aantalVragen;
//Variablen voor het Intro
private Button cmdVerder;
//Variabelen voor de methode aflsluiten
Button cmdOpnieuw;
//Variabel voor de methode uitgespeeld()
Button cmdVerderUitgespeeld;
//Algemene variabelen
private int reisStatus; //In welk land bevindt de speler zich?
private double totaalScore; //De totale score
private double punten; //Het aantal punten dat voor de huidige vraag te verdienen is.
private int spelStatus; //Paint weet wat er getekend moet worden door spelStatus te checken.
//Plaatjes
private Image imgWelkom;
private Image imgVraag;
private Image imgAntwoordGoed;
private Image imgAntwoordFout;
private Image imgEuropa;
private Image imgRondje;
private Image imgKruisje;
private Image imgReizen;
private Image imgTotZiens;
private Image imgWinner;
//Declareer alle landen
private Landen[] euroLanden;
//Variabel voor de cheat
private boolean F12Toets;
public void init(){
setLayout( null );
setBackground( Color.white );
addMouseListener(this);
addKeyListener(this);
//Maak de verschillende vensters (panels)
vensterMenu = new Menu(this);
vensterInfo = new Info(this);
//Variablen voor het Intro
cmdVerder = new Button("Verder");
//Variablen voor de vragen
vragen = new Vragen();
lblVraag = new Label();
lblAntwoordA = new Label();
lblAntwoordB = new Label();
lblAntwoordC = new Label();
lblAntwoordD = new Label();
lblHint = new Label();
lblAntwoord = new Label();
gesteldeVragen = new int[10];
cmdAntwoordA = new Button("A");
cmdAntwoordB = new Button("B");
cmdAntwoordC = new Button("C");
cmdAntwoordD = new Button("D");
cmdVolgendeVraag = new Button( "Verder" );
cmdHintVerder = new Button( "Verder" );
//Variabelen voor de methode toonNieuw
txtNaam = new TextField(20);
txtLeeftijd = new TextField(20);
lblNaam = new Label ("Voer hier je naam in: ");
lblLeeftijd = new Label("Voer hier je leeftijd in: ");
cmdStart = new Button("Start");
//Maak een lettertype
f = new Font("Arial",Font.BOLD,14);
labelKleur = new Color(134,81,187);
//Variabelen voor de methode afsluiten
cmdOpnieuw = new Button("Opnieuw spelen");
//Variabel voor de methode uitgespeeld()
cmdVerderUitgespeeld = new Button("Verder");
//Haal alle afbeeldingen van de hardeschijf
imgWelkom = geefAfbeelding("Welkom.jpg");
imgEuropa = geefAfbeelding("Europa.jpg");
imgAntwoordGoed = geefAfbeelding("AntwoordGoed.jpg");
imgAntwoordFout = geefAfbeelding("AntwoordFout.jpg");
imgVraag = geefAfbeelding("Vraag.jpg");
imgRondje = geefAfbeelding("Rondje.jpg");
imgKruisje = geefAfbeelding("Kruisje.jpg");
imgReizen = geefAfbeelding("Reizen.jpg");
imgTotZiens = geefAfbeelding("TotZiens.jpg");
imgWinner = geefAfbeelding("Winner.jpg");
//Maak alle landen
euroLanden = new Landen[12];
euroLanden[0] = new Landen(314,176,"Nederland",100);
euroLanden[1] = new Landen(274,163,"Engeland",100);
euroLanden[2] = new Landen(281,214,"Frankrijk",120);
euroLanden[3] = new Landen(245,146,"Ierland",75);
euroLanden[4] = new Landen(184,261,"Portugal",225);
euroLanden[5] = new Landen(221,255,"Spanje",85);
euroLanden[6] = new Landen(331,240,"Italië",135);
euroLanden[7] = new Landen(364,225,"Oostenrijk",90);
euroLanden[8] = new Landen(339,182,"Duitsland",75);
euroLanden[9] = new Landen(315,198,"Luxemburg",95);
euroLanden[10] = new Landen(310,189,"Belgie",60);
euroLanden[11] = new Landen(431,93,"Finland",280);
}
public void setVraagZichtbaar(boolean zichtbaar){
lblVraag.setVisible(zichtbaar);
lblAntwoordA.setVisible(zichtbaar);
lblAntwoordB.setVisible(zichtbaar);
lblAntwoordC.setVisible(zichtbaar);
lblAntwoordD.setVisible(zichtbaar);
lblHint.setVisible(zichtbaar);
cmdAntwoordA.setVisible(zichtbaar);
cmdAntwoordB.setVisible(zichtbaar);
cmdAntwoordC.setVisible(zichtbaar);
cmdAntwoordD.setVisible(zichtbaar);
}
public void paint( Graphics g ){
switch( spelStatus ){
case 0:
g.setColor(labelKleur);
g.setFont( f );
g.drawString("Klik om verder te gaan",270,440);
g.drawImage(imgWelkom,175,50,350,350,this);
break;
case 1:
toonIntro();
break;
case 2:
tekenEuropa();
break;
case 3:
g.drawImage(imgVraag,150,350,80,110,this);
tekenEuropa();
break;
case 4:
g.drawImage(imgAntwoordGoed,150,350,80,110,this);
tekenEuropa();
break;
case 5:
g.drawImage(imgAntwoordFout,150,350,80,110,this);
tekenEuropa();
break;
case 6:
g.drawImage(imgReizen,150,350,100,80,this);
tekenEuropa();
break;
case 7:
g.drawImage(imgTotZiens,200,100,300,100,this);
break;
case 8:
uitgespeeld();
break;
}
}
public void tekenEuropa(){
//Zet de kaart van Europa op het scherm
getGraphics().drawImage(imgEuropa,175,20,350,300,this);
//Zet bij alle landen die geweest zijn een kruisje en zet bij het land waar de speler
//zich bevind een rondje.
for( int teller = 0; teller<reisStatus; teller++ ){
getGraphics().drawImage(imgRondje,euroLanden[teller].getX(),euroLanden[teller].getY(),10,10,this);
}
getGraphics().drawImage(imgKruisje,euroLanden[reisStatus].getX(),euroLanden[reisStatus].getY(),10,10,this);
}
public void startNieuwSpel(){
//Haal alle componenten weg
setVraagZichtbaar( false );
remove( vensterInfo );
getGraphics().clearRect(0,0,700,480);
cmdVolgendeVraag.setVisible(false);
lblAntwoord.setVisible(false);
//Voeg het menu toe en disabled de knop om een hint op te roepen
toonMenu();
vensterMenu.setHint( false );
vensterMenu.setHelp(false);
//Zet alle waardes op nul
txtNaam.setText("");
txtLeeftijd.setText("");
vensterMenu.setHint(false);
vensterMenu.setScore(0.00);
reisStatus = 0;
totaalScore = 0;
punten = 0;
spelStatus = 1;
aantalVragen = 0;
//Toon het intro
toonIntro();
}
//Toon de kaart van Europa en de vragen
public void startSpel(){
//Maak de knop voor een hint enabled
vensterMenu.setHint( true );
vensterMenu.setHelp( true );
//Maak 4 labels voor de antwoorden en 1 voor de vraag
lblVraag.setBounds(250,350,600,20);
lblAntwoordA.setBounds(280,380,600,20);
lblAntwoordB.setBounds(280,400,600,20);
lblAntwoordC.setBounds(280,420,600,20);
lblAntwoordD.setBounds(280,440,600,20);
lblAntwoord.setBounds(250,350,600,20);
lblHint.setBounds(250,350,600,20);
add( lblVraag );
add( lblAntwoordA );
add( lblAntwoordB );
add( lblAntwoordC );
add( lblAntwoordD );
add( lblAntwoord );
add( lblHint );
lblAntwoord.setVisible( false );
lblHint.setVisible( false );
//Voeg 4 knoppen toe voor het antwoorden
cmdAntwoordA.setBounds(250,382,17,17);
cmdAntwoordB.setBounds(250,402,17,17);
cmdAntwoordC.setBounds(250,422,17,17);
cmdAntwoordD.setBounds(250,442,17,17);
cmdVolgendeVraag.setBounds(250,380,70,20);
cmdHintVerder.setBounds(250,380,70,20);
add( cmdAntwoordA );
add( cmdAntwoordB );
add( cmdAntwoordC );
add( cmdAntwoordD );
add( cmdVolgendeVraag );
add( cmdHintVerder );
cmdVolgendeVraag.setVisible( false );
cmdHintVerder.setVisible( false );
volgendeVraag();
}
public void toonInfo(){
//Verwijder de componenten op het scherm
if( lblAntwoord.isVisible() ){
getGraphics().clearRect(150,350,100,80);
lblAntwoord.setVisible( false );
cmdVolgendeVraag.setVisible( false );
setVraagZichtbaar( true );
volgendeVraag();
}
setVraagZichtbaar( false );
cmdVolgendeVraag.setVisible( false );
lblAntwoord.setVisible( false );
vensterInfo.setBounds(130,0,500,480);
add( vensterInfo );
resize(700,480);
}
public void toonMenu(){
vensterMenu.setBounds(0,0,130,480);
add( vensterMenu );
//Resize het venster, zodat de labels zichtbaar worden.
resize(700,480);
}
public void toonIntro(){
//Maak het scherm leeg.
getGraphics().clearRect(0,0,700,480);
verwijderNieuw();
getGraphics().setColor( labelKleur );
getGraphics().setFont( f );
getGraphics().drawString("Welkom bij Race Door Europa.",200,100);
getGraphics().drawString("Het is de bedoeling dat je zo snel mogelijk door alle landen",200,130);
getGraphics().drawString("in Europa reist.",200,160);
getGraphics().drawString("Je moet je reis uiteraard wel betalen, hiervoor moet je euro's",200,190);
getGraphics().drawString("verdienen. Deze kun je verdienen door vragen goed te beantwoorden.",200,220);
getGraphics().drawString("Je bent nu in Nederland en je wilt naar Ierland, hiervoor heb",200,250);
getGraphics().drawString("je 100 euro nodig.",200,280);
getGraphics().drawString("Veel succes en plezier...",200,340);
cmdVerder.setBounds(200,380,70,20);
add( cmdVerder );
}
public void antwoordGoed(){
//Verwijder de vraag en de antwoorden
setVraagZichtbaar( false );
//Disable de knop Hint
vensterMenu.setHint( false );
spelStatus = 4;
totaalScore+= punten;
vensterMenu.setScore(totaalScore);
getGraphics().drawImage(imgAntwoordGoed,150,350,80,110,this);
lblAntwoord.setText("Het antwoord is goed!");
lblAntwoord.setVisible( true );
cmdVolgendeVraag.setVisible( true );
}
public void antwoordFout(){
String juistAntwoord = "";
switch( vragen.geefJuistAntwoord(niveau,reisStatus,indexVraag) ){
case 1: juistAntwoord = vragen.geefAntwoordA(niveau,reisStatus,indexVraag);break;
case 2: juistAntwoord = vragen.geefAntwoordB(niveau,reisStatus,indexVraag);break;
case 3: juistAntwoord = vragen.geefAntwoordC(niveau,reisStatus,indexVraag);break;
case 4: juistAntwoord = vragen.geefAntwoordD(niveau,reisStatus,indexVraag);break;
}
//Verwijder de vraag en de antwoorden
setVraagZichtbaar( false );
//Disable de knop Hint
vensterMenu.setHint( false );
spelStatus = 5;
getGraphics().drawImage(imgAntwoordFout,150,350,80,110,this);
lblAntwoord.setText("Jammer, het juiste antwoord was " + juistAntwoord );
lblAntwoord.setVisible( true );
cmdVolgendeVraag.setVisible( true );
}
public void setGegevens( String naam, int leeftijd){
this.naam = naam;
//Bepaal het niveau
if( leeftijd < 8 ){ niveau = 0; }
if( leeftijd == 8 || leeftijd == 9){ niveau = 1; }
if( leeftijd > 9 ){ niveau = 2; }
verwijderNieuw();
}
public void uitgespeeld(){
//Zet de spelStatus op 7, zodat paint weet dat het eindplaatje moet worden getekend.
spelStatus = 8;
//Maak het scherm leeg
getGraphics().clearRect(0,0,700,480);
remove( vensterMenu );
remove( vensterInfo );
verwijderNieuw();
setVraagZichtbaar( false );
remove( cmdVerder );
getGraphics().setColor( labelKleur );
getGraphics().setFont( new Font("Arial",Font.BOLD,25) );
getGraphics().drawString("Gefeliciteerd " + naam, 250,100);
getGraphics().drawString("Je hebt het spel uitgespeeld met " + aantalVragen + " vragen", 250,150);
getGraphics().drawImage( imgWinner, 300,200,100,150, this );
cmdVerderUitgespeeld.setBounds(305,400,70,20);
add( cmdVerderUitgespeeld );
}
//Deze methode laad een afbeelding van de harde schijf.
public Image geefAfbeelding(String bestandsnaam){
return getImage(getDocumentBase(), "Pictures/" + bestandsnaam);
}
public void afsluiten(){
//System.exit(0);
//Maak het scherm leeg
getGraphics().clearRect(0,0,700,480);
remove( vensterMenu );
remove( vensterInfo );
verwijderNieuw();
setVraagZichtbaar( false );
remove( cmdVerder );
remove( cmdVerderUitgespeeld );
spelStatus = 7;
getGraphics().drawImage(imgTotZiens,200,150,300,100,this);
cmdOpnieuw.setBounds(300,300,100,20);
this.add( cmdOpnieuw );
}
public void reizen(){
++reisStatus;
spelStatus = 6;
//Controleer of het laatste land is bereikt.
if( reisStatus == 11 ){
//Het spel is uitgespeeld
uitgespeeld();
}
else{
getGraphics().drawImage(imgRondje,euroLanden[reisStatus - 1].getX(),euroLanden[reisStatus - 1].getY(),10,10,this);
getGraphics().drawImage(imgKruisje,euroLanden[reisStatus].getX(),euroLanden[reisStatus].getY(),10,10,this);
getGraphics().clearRect(150,350,80,110);
getGraphics().drawImage(imgReizen,150,350,100,80,this);
setVraagZichtbaar( false );
lblAntwoord.setText("Gefeliciteerd " + naam + ", je reist door naar " + euroLanden[reisStatus].getNaam());
lblAntwoord.setVisible( true );
cmdVolgendeVraag.setVisible( true );
}
}
public void volgendeVraag(){
boolean vraagBeschikbaar;
//Kijk of er al gereist kan worden
if( totaalScore >= euroLanden[reisStatus].getReisKosten() ){
//Maak de array gesteldeVragen leeg
for( int teller = 0; teller<=9; teller++ ){
gesteldeVragen[teller] = 0;
}
//Reis één land verder
totaalScore-= euroLanden[reisStatus].getReisKosten();
vensterMenu.setScore(totaalScore);
reizen();
}
else{
setVraagZichtbaar( true );
spelStatus = 3;
punten = 15.00;
//Als alle vragen gesteld zijn moet de array gestelde vragen leeg gemaakt
//worden en moeten de vragen opnieuw worden gesteld
vraagBeschikbaar = false;
for( int teller = 0; teller<=9; teller++ ){
if( gesteldeVragen[teller] == 0 ){ vraagBeschikbaar = true; }
}
if ( !vraagBeschikbaar ){
for( int teller = 0; teller<=9; teller++ ){
gesteldeVragen[teller] = 0;
}
}
//Zoek een random vraag en controleer of hij al gesteld is.
int vraag = (int) (Math.random() * 10);
while( gesteldeVragen[vraag] !=0 ){
vraag = (int) (Math.random() * 10);
}
gesteldeVragen[vraag] = 1;
indexVraag = vraag;
//Maak de knop Hint enable
vensterMenu.setHint( true );
getGraphics().drawImage(imgVraag,150,350,80,110,this);
aantalVragen++;
lblVraag.setText( vragen.geefVraag(niveau,reisStatus,vraag) );
lblAntwoordA.setText( vragen.geefAntwoordA(niveau,reisStatus,vraag) );
lblAntwoordB.setText( vragen.geefAntwoordB(niveau,reisStatus,vraag) );
lblAntwoordC.setText( vragen.geefAntwoordC(niveau,reisStatus,vraag) );
lblAntwoordD.setText( vragen.geefAntwoordD(niveau,reisStatus,vraag) );
lblHint.setText( vragen.geefHint(niveau,reisStatus,vraag) );
}
}
public void geefHint(){
setVraagZichtbaar( false );
lblHint.setText( vragen.geefHint(niveau,reisStatus,indexVraag) );
lblHint.setVisible( true );
cmdHintVerder.setVisible( true );
}
public void toonNieuw(){
txtNaam.setBounds(390,170,100,20);
txtLeeftijd.setBounds(390,200,100,20);
lblNaam.setBounds(220,170,150,20);
lblLeeftijd.setBounds(220,200,160,20);
cmdStart.setBounds(430,240,50,20);
lblNaam.setForeground(labelKleur);
lblLeeftijd.setForeground(labelKleur);
lblNaam.setFont(f);
lblLeeftijd.setFont(f);
add( lblNaam );
add( txtNaam );
add( lblLeeftijd );
add( txtLeeftijd );
add( cmdStart );
//Resize het venster, zodat de labels zichtbaar worden.
resize(700,480);
}
public void verwijderInfo(){
//Maak de vraag weer zichtbaar en haal het venster weg.
setVraagZichtbaar( true );
remove( vensterInfo );
resize(700,480);
}
public void verwijderNieuw(){
remove( lblNaam );
remove( txtNaam );
remove( lblLeeftijd );
remove( txtLeeftijd );
remove( cmdStart );
}
public boolean action( Event e, Object o){
if( e.target == cmdStart ){
//Zet de gegevens in de variabelen
int leeftijd = Integer.parseInt(txtLeeftijd.getText());
setGegevens(txtNaam.getText(),leeftijd);
spelStatus = 2; //Als paint() wordt aangeroepen moet de kaart van Europa worden getekend.
startSpel();
return true;
}
if(e.target == cmdVerder ){
//Ga verder met het spel
getGraphics().clearRect(0,0,700,480);
remove( cmdVerder );
spelStatus = -1; //Met paint() mag niks getekend worden.
toonNieuw();
return true;
}
if( e.target == cmdOpnieuw ){
remove( cmdOpnieuw );
startNieuwSpel();
}
if( e.target == cmdVerderUitgespeeld ){
afsluiten();
}
if( e.target == cmdAntwoordA ){
if( vragen.checkAntwoord(niveau,reisStatus,indexVraag,1) ){
//Het antwoord is goed
antwoordGoed();
}
else{
//Het antwoord is fout
antwoordFout();
}
return true;
}
if( e.target == cmdAntwoordB ){
if( vragen.checkAntwoord(niveau,reisStatus,indexVraag,2) ){
//Het antwoord is goed
antwoordGoed();
}
else{
//Het antwoord is fout
antwoordFout();
}
return true;
}
if( e.target == cmdAntwoordC ){
if( vragen.checkAntwoord(niveau,reisStatus,indexVraag,3) ){
//Het antwoord is goed
antwoordGoed();
}
else{
//Het antwoord is fout
antwoordFout();
}
return true;
}
if( e.target == cmdAntwoordD ){
if( vragen.checkAntwoord(niveau,reisStatus,indexVraag,4) ){
//Het antwoord is goed
antwoordGoed();
}
else{
//Het antwoord is fout
antwoordFout();
}
return true;
}
if( e.target == cmdVolgendeVraag ){
//Haal eventueel het plaatje van het reizen weg, wat groter is dat het
//plaatje van de vraag
getGraphics().clearRect(150,350,100,80);
lblAntwoord.setVisible( false );
cmdVolgendeVraag.setVisible( false );
setVraagZichtbaar( true );
volgendeVraag();
return true;
}
if( e.target == cmdHintVerder ){
cmdHintVerder.setVisible( false );
lblHint.setVisible( false );
setVraagZichtbaar( true );
punten = 7.5;
}
return false;
}
//Muis afhandelingen
public void mousePressed( MouseEvent e){
if( spelStatus == 0 ){
spelStatus = 1;
toonIntro();
toonMenu();
}
}
public void mouseClicked( MouseEvent e){}
public void mouseEntered( MouseEvent e){}
public void mouseExited( MouseEvent e){}
public void mouseReleased( MouseEvent e){}
//Toetsenbord afhandelingen
public void keyPressed( KeyEvent e ){
if( e.getKeyCode() == KeyEvent.VK_F12 ){
if( e.isAltDown() ){
uitgespeeld();
}
}
}
public void keyReleased( KeyEvent e){}
public void keyTyped( KeyEvent e ){}
} |
Ducati: making mechanics out of riders since 1946
oei:
1 algemene opmerking:
Waarom gebruik je geen classes voor je vragen?
Alles harcoded in 1 class zetten is niet zo'n goede oplossing
1 algemene opmerking:
Waarom gebruik je geen classes voor je vragen?
Alles harcoded in 1 class zetten is niet zo'n goede oplossing
Ik heb nog iets van 4 klassen waaronder 1 klasse met daarin de vragen. Maar ik heb die klasse er niet bij gezet, omdat ik denk dat daar het probleem niet ligt.Op vrijdag 11 januari 2002 13:30 schreef wasigh het volgende:
oei:
1 algemene opmerking:
Waarom gebruik je geen classes voor je vragen?
Alles harcoded in 1 class zetten is niet zo'n goede oplossing
Kan het misschien liggen dat ik een Applet-tag gebruik in het HTML bestand die de applet aanroept?
Ducati: making mechanics out of riders since 1946
Verwijderd
verander g.drawImage(imgWelkom,175,50,350,350,this); eens in: while(!g.drawImage(imgWelkom,175,50,350,350,this));
en dan natuurlijk bij alle drawImages. Het idee hierachter is alsvolgt. een pic word pas opgehaald als ie ook daadwerkelijk getoond wordt, nu wil het wel eens voorkomen dat hij nog bezig is met ophalen terwijl de laatste repaint al geweest is. dit kan doordat het ophalen van een image een eigen thread heeft, en jouw thread dus doorloopt. conclusie, er zou nog een repaint aangeroepen moeten worden, maar je weet niet wanneer. dus laat je 't progie dus gewoon ff wachten totdat ie daadwerkelijk ingeladen en getekend word. (drawImage returned dus een boolean die zegt of ie al klaar is)
en dan natuurlijk bij alle drawImages. Het idee hierachter is alsvolgt. een pic word pas opgehaald als ie ook daadwerkelijk getoond wordt, nu wil het wel eens voorkomen dat hij nog bezig is met ophalen terwijl de laatste repaint al geweest is. dit kan doordat het ophalen van een image een eigen thread heeft, en jouw thread dus doorloopt. conclusie, er zou nog een repaint aangeroepen moeten worden, maar je weet niet wanneer. dus laat je 't progie dus gewoon ff wachten totdat ie daadwerkelijk ingeladen en getekend word. (drawImage returned dus een boolean die zegt of ie al klaar is)
Maak van:
maar is:
Je maakt namelijk een beginnersfout die vaak gemaakt wordt.
getImage keert altijd direct terug. Vervolgens ga je je image gebruiken. Maar als de image nog niet geladen is op dat moment, dan wordt die niet of gedeeltelijk weergegeven (hangt af van de specifieke VM).
In de API docs zul je ook zien dat getImage altijd direct terug keert. En dat er geen garantie wordt gegeven of op dat moment het plaatje volledig geladen is. Met de MediaTracker wacht je dus totdat het plaatje geladen is. Of als dit niet lukt, dan kun je dit achterhalen via de mediatracker. Kijk maar in de API docs voor meer info over de MediaTracker. De interupted exception handler is verplicht, maar die zal niet tot bijna niet voorkomen indien je Applet single threaded is. Is dit wel zo, dan hangt het af van de rest van je implementatie of dit gevolgen heeft. Maar daar heb jij meer kijk op dan ik.
Veel succes.
code:
1
2
3
4
| public Image geefAfbeelding(String bestandsnaam)
{
return getImage(getDocumentBase(), "Pictures/" + bestandsnaam);
} |
maar is:
code:
1
2
3
4
5
6
7
8
9
10
11
| public Image geefAfbeelding(String bestandsnaam)
{
Image ImageToBeLoaded = getImage(getDocumentBase(), "Pictures/" + bestandsnaam);
MediaTracker tracker1 = new MediaTracker(this);
tracker1.addImage(ImageToBeLoaded, 0);
try {tracker1.waitForID(0);}
catch (InterruptedException e) {}
return ImageToBeLoaded;
} |
Je maakt namelijk een beginnersfout die vaak gemaakt wordt.
getImage keert altijd direct terug. Vervolgens ga je je image gebruiken. Maar als de image nog niet geladen is op dat moment, dan wordt die niet of gedeeltelijk weergegeven (hangt af van de specifieke VM).
In de API docs zul je ook zien dat getImage altijd direct terug keert. En dat er geen garantie wordt gegeven of op dat moment het plaatje volledig geladen is. Met de MediaTracker wacht je dus totdat het plaatje geladen is. Of als dit niet lukt, dan kun je dit achterhalen via de mediatracker. Kijk maar in de API docs voor meer info over de MediaTracker. De interupted exception handler is verplicht, maar die zal niet tot bijna niet voorkomen indien je Applet single threaded is. Is dit wel zo, dan hangt het af van de rest van je implementatie of dit gevolgen heeft. Maar daar heb jij meer kijk op dan ik.
Veel succes.
Dit is dus een slechte oplossing, niet alleen vreet je onnodige cycles. Zodra de Image om wat voor reden niet geladen kan worden, HANGT je applet. Je blijft oneindig loopen bij een netwerk time-out. Iets wat makkelijker gebeurt dan menigeen denkt. Zeker op het internet.Op zaterdag 12 januari 2002 01:23 schreef JavaRules het volgende:
verander g.drawImage(imgWelkom,175,50,350,350,this); eens in: while(!g.drawImage(imgWelkom,175,50,350,350,this));
en dan natuurlijk bij alle drawImages. Het idee hierachter is alsvolgt. een pic word pas opgehaald als ie ook daadwerkelijk getoond wordt, nu wil het wel eens voorkomen dat hij nog bezig is met ophalen terwijl de laatste repaint al geweest is. dit kan doordat het ophalen van een image een eigen thread heeft, en jouw thread dus doorloopt. conclusie, er zou nog een repaint aangeroepen moeten worden, maar je weet niet wanneer. dus laat je 't progie dus gewoon ff wachten totdat ie daadwerkelijk ingeladen en getekend word. (drawImage returned dus een boolean die zegt of ie al klaar is)
Wij hebben het soort van opgelost door nog niet eerder getoonde plaatjes meteen te repainten na het laden. Bijna 100% kans dat ze dan wel verschijnen, en het valt niet op.
Oja, dit probleem oplossen levert je een 10 op zei Daan.
Bdw, nog een bugje: Als je een leeftijd van 1 cijfer invult krijg je geen vragen, alleen knopjes.
Oja, dit probleem oplossen levert je een 10 op zei Daan.
Bdw, nog een bugje: Als je een leeftijd van 1 cijfer invult krijg je geen vragen, alleen knopjes.
Verwijderd
Hmmm... ik weet niet hoe het er bij jullie uitziet, maar bij mij is de enige knop die werkt de Afsluiten-knop, en verder is ie constant de tekst rechts aan het repainten, ook erg irritant
Nog mooier is om in een apart threadje te starten dat op de mediatrackers wacht en dan je hoofdapplicatie notified.Op zaterdag 12 januari 2002 07:31 schreef Gert het volgende:
Wij hebben het soort van opgelost door nog niet eerder getoonde plaatjes meteen te repainten na het laden. Bijna 100% kans dat ze dan wel verschijnen, en het valt niet op.
Oja, dit probleem oplossen levert je een 10 op zei Daan.
Bdw, nog een bugje: Als je een leeftijd van 1 cijfer invult krijg je geen vragen, alleen knopjes.
Zowiezo is het netter om eerst al je GFX te laden en dan pas te gaan draaien, tenzij je echt grote bestanden moet hebben die niet altijd gebruikt worden.
Pagina: 1