[JAVA] Galgje & random woorden uitzoeken

Pagina: 1
Acties:
  • 828 views sinds 30-01-2008

  • endless
  • Registratie: April 2004
  • Niet online
Voor school zijn we bezig met een java applicatie. Mijn groep heeft gekozen voor Galgje, deze code hebben we gemaakt maar deze werkt nog niet zoals we willen. Nu pakt de applicatie steeds maar 1 woord en wij willen dat de applicatie random de woorden pakt.

Java:
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
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Galgje2 extends Applet implements ActionListener{
  
        static final int DOOD=13;   // dodelijk aantal missers
        private int missers;        // actueel aantal missers
        private String meldTekst;   // melding fout of victorie
        private String toelichting; // toelichting bij melding
        private String rwoord;      // het te raden woord
        private StringBuffer gwoord;// het geraden woord
        private Label lblGwoord;    // label voor gwoord
        private Button bStart;      // (her)start het spel!
        private Button bGo;         // raad de letter!
        private TextField tfLetter; // vakje voor letter
        private Font fnt;           // algemeen lettertype
        
        public void init(){

                fnt = new Font( "Monospaced", 0, 12 );

                // Maak een tekstvak voor de raadletter.
                
                tfLetter = new TextField();

                // Maak buttons en labels.
                
                bStart = new Button("Herstart");
                bGo = new Button("Go");
                lblGwoord = new Label();
                lblGwoord.setFont(fnt);

                // Voeg alle grafische elementen aan de applet toe.
                
                add(bStart);
                add(new Label("Raad een letter: "));
                add(tfLetter);
                add(bGo);
                add(lblGwoord);
  
                // Meld de buttons aan als bronnen van events.

                bStart.addActionListener(this);
                bGo.addActionListener(this);
  
                // Start het eerste spel.

                initGame();
        }
        
        public void initGame(){

                missers=0;
                // missers=12; // Activeer voor testen
                
            rwoord = new String("applicatie");
                rwoord = new String("netwerk");
                rwoord = new String("computers");

                char posities[] = new char[rwoord.length()];
                for (int i=0; i<rwoord.length(); i++) {
                        posities[i] = '.';
                }
                String s = new String(posities);
                gwoord = new StringBuffer(s);

                tfLetter.setText("");
                lblGwoord.setText(new String(gwoord));
  
                // Wis de meldingen.

                meldTekst="";
                toelichting = "";
                repaint();
        }

        public void paint(Graphics g) {
                
                // Teken het galgje.
                int baseY = 250;
                
                if (missers >  0){    // grond
                        g.drawLine(90, baseY,200,baseY);
                }
                if (missers >  1){    // balk omhoog
                        g.drawLine(125,baseY,125,baseY-100);
                }
                if (missers >  2){
                        g.drawLine(110,baseY,125,baseY-15);
                }
                if (missers >  3){
                        g.drawLine(140,baseY,125,baseY-15);
                }
                if (missers >  4){    // zijbalk
                        g.drawLine(125,baseY-100,175,baseY-100);
                }
                if (missers >  5){
                        g.drawLine(125,baseY-85,140,baseY-100);
                }
                if (missers >  6){    // het touw
                        g.drawLine(175,baseY-100,175,baseY-75);
                }
                if (missers >  7){    // uw lijk
                        g.drawOval(170,baseY-75,10,12);
                }
                if (missers >  8){
                        g.drawOval(170,baseY-65,15,25);
                }
                if (missers >  9){    // armen
                        g.drawLine(160,baseY-65,170,baseY-60);
                }
                if (missers > 10){
                        g.drawLine(183,baseY-60,193,baseY-65);
                }
                if (missers > 11){    // benen
                        g.drawLine(165,baseY-30,170,baseY-45);
                }
                if (missers > 12){
                        g.drawLine(183,baseY-45,193,baseY-30);
                }
                
                // Toon de meldingen.
                g.drawString( meldTekst, 50, baseY+25 );
                g.drawString( toelichting, 25, baseY+45 );
        
        }
        
        public void actionPerformed(ActionEvent e){

                if (e.getSource() == bStart){
                        initGame();
                }

                if (e.getSource() == bGo){

                        verwerkBeurt();

                        // Wis het vakje met de letter.

                        tfLetter.setText("");
                        repaint();
                }
        }

        private void verwerkBeurt(){
                String s, t;
                char a;
                
                s = tfLetter.getText();
                a = s.charAt(0);
                
                if (!Character.isLetter(a)){
                          meldTekst="U mag alleen een letter invullen!";
                          return;
                }
                if (s.length()>1){
                          meldTekst="Maximaal 1 letter invullen.";
                          return;
                }
        
                // Is letter al geraden?
    
                t = new String(gwoord);
                if (t.indexOf(s) != -1){
                        meldTekst="Deze letter is al een keer geraden.";
                        return;
                }
        
                // Komt letter in rwoord niet voor?
        
                if (rwoord.indexOf(s) == -1){
                        meldTekst="";
                        missers++;
                        if (missers==DOOD){
                                meldTekst="U bent dood!";
                                toelichting = 
                                      "Klik op herstart voor een nieuwe kans";
                        }
                        
                        return;
                }
        
                // Vervang punten in gwoord door gevonden letter.
        
                for (int i=0; i<rwoord.length(); i++){
                        if (rwoord.charAt(i) == a){
                                gwoord.setCharAt(i, a);
                        }
                }
                t = new String(gwoord);
                lblGwoord.setText(t);
        
                // Als alle punten ingevuld zijn
                // heeft de speler gewonnen.
        
                if (t.indexOf('.') == -1){
                        meldTekst="Gewonnen! Gefeliciteerd!";
                        return;
                }
              
                // Wis melding.
                
                meldTekst="";
        }
}


Hij pakt nu steeds het onderste woord bij de rwoorden..

Heeft iemand informatie voor ons of een oplossing eventueel.

We hebben gekeken naar Math.random, maar deze werkt alleen met cijfers wij met woorden.

[ Voor 6% gewijzigd door endless op 28-10-2005 13:27 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
endless schreef op vrijdag 28 oktober 2005 @ 13:25:
We hebben gekeken naar Math.random, maar deze werkt alleen met cijfers wij met woorden.
Denk nou eens even na?
Math.random geeft een willekeurig cijfer terug... Wat zou je daar nou mee kunnen doen?
Overigens is rwoord een string die je op regels 57-59 gewoon telkens opnieuw vult en dus de laatste waarde feitelijk er in zet. Ik zou daar een array van maken ;)
Wil je je code in tact laten, dan maak je een array (aWord[] ofzo) en pak je dus daar een willekeurig element uit en ken je de waarde toe aan rwoord:

rwoord = awoord[<random_dingetje_hier>];

Zoiets... (Ik probeer niet té veel weg te geven zoals je ziet ;) )

[ Voor 45% gewijzigd door RobIII op 28-10-2005 13:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

rwoord wordt steeds overschreven.

maak een array van Strings en trek daar een woord uit
RobIII schreef op vrijdag 28 oktober 2005 @ 13:27:
[...]


Overigens is rwoord een string die je op regels 57-59 gewoon telkens opnieuw vult en dus de laatste waarde feitelijk er in zet.
Niet helemaal correct: String objecten zijn immutable, je overschrijft hier de pointer

[ Voor 64% gewijzigd door Verwijderd op 28-10-2005 13:32 ]


  • endless
  • Registratie: April 2004
  • Niet online
RobIII schreef op vrijdag 28 oktober 2005 @ 13:27:
[...]

Denk nou eens even na?
Math.random geeft een willekeurig cijfer terug... Wat zou je daar nou mee kunnen doen?
Ik ben beginnend MBO Applicatie Ontwikkelaar, verwacht niet dat ik er alles vanaf weet..
Maar wat je zegt heb ik inderdaad ook al aan gedacht, de woorden een eigen cijfer geven en deze door Math.random laten kiezen waardoor je een random cijfer krijgt.

Alleen heb ik dit nog niet werkend gekregen..

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
endless schreef op vrijdag 28 oktober 2005 @ 13:29:
Ik ben beginnend MBO Applicatie Ontwikkelaar, verwacht niet dat ik er alles vanaf weet..
Dat doe ik ook niet. Maar, verwacht dan ook niet dat we alles gaan voorkauwen, je code debuggen of je aan het handje gaan houden ;)
Dit is érg basic stuff, en ik vermoed dat als je in de les wat beter oplet, of je boek er bij pakt, je er easy uit kan komen. Tevens is "galgje" natuurlijk al 1001 keer gemaakt door "anderen" en zou je eens wat van die code kunnen afkijken.
Verwijderd schreef op vrijdag 28 oktober 2005 @ 13:29:
rwoord wordt steeds overschreven.
Niet helemaal correct: String objecten zijn immutable, je overschrijft hier de pointer
Mja, whatever :D Ik doe nooit iets met JAVA :P Maar het uiteindelijke resultaat is natuurlijk hetzelfde.

Edit: Overigens, heb je mijn edit gezien? Daar geef ik het al aardig weg ;)

[ Voor 51% gewijzigd door RobIII op 28-10-2005 13:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • endless
  • Registratie: April 2004
  • Niet online
RobIII schreef op vrijdag 28 oktober 2005 @ 13:31:
[...]

Dat doe ik ook niet. Maar, verwacht dan ook niet dat we alles gaan voorkauwen, je code debuggen of je aan het handje gaan houden ;)
Dit is érg basic stuff, en ik vermoed dat als je in de les wat beter oplet, of je boek er bij pakt, je er easy uit kan komen. Tevens is "galgje" natuurlijk al 1001 keer gemaakt door "anderen" en zou je eens wat van die code kunnen afkijken.
Ik ben al blij dat ik de code tot zover werkend heb gekregen en verwacht ook zeker niet dat jullie alles gaan voorkauwen :)
In ieder geval bedankt voor de duidelijkheid over de array's, ga daar nu een beetje mee testen.
Code's bekijken van anderen heb ik uteraard ook al gedaan, anders had ik zover niet gekomen ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:50
Hoi.

P&W is een forum waar we je best willen helpen, maar niet op deze manier.
Het is niet de bedoeling dat je hier gewoon ff wat code dumpt (vrijwel een heel programma nota-bene), met de melding dat hij dit of dat niet doet zoals je verwacht had.
Zo een dingen kom je wel nu en dan eens tegen bij het programmeren. Het is dan de bedoeling dat de programmeur (jij dus), er even de debugger bij pakt , en kijkt waar het misloopt en waarom het misloopt. Debuggen is iets wat je als programmeur zelf moet kunnen. Het is niet de bedoeling dat je dat aan anderen overlaat.
Jouw IDE zal wel genoeg mogelijkheden hebben (breakpoints, watches, etc...) om die code eens te debuggen.

succes :)

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.