Dobbelspel code stukken (if els) omzetten in arrayList

Status
Niet open voor verdere reacties.

Yumika

Nieuwe gebruiker
Lid geworden
7 nov 2016
Berichten
2
Oke ik heb 3 klasse een opstarklasse, paneel klasse en een klasse dobbelsteen. geschreven in Eclips

het betreft 1 stuk code in de dobbelsteen klasse:

Het gaat om 2 stukke code in de paneel klasse:
1) De paincomponent hier staat hoeveel dobbelstenen hij moet plaatsen bij een gekozen aantal.
2) De werpknophandler die het aantal gekozen stenen voorziet van een random gooi.

Is er iemand die mij op weg kan helpen? ik kan nergens echt een concreet voorbeeld vinden waarmee ik zelf de link kan leggen hoe ik mij tot dusver geschreven code kan aanpassen om die arrayList hier in te verwerken.
De code moet volgens H1 t/m H7 van het mooie boek En dan is er... Java 3de druk.

De Opstartklasse:
Code:
public class WPIJ_Start extends JFrame{
	
		public static void main ( String[]args){
		
		//maak een frame
		JFrame frame = new WPIJ_Start();
		frame.setSize(400, 200);
		frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		frame.setTitle("Eerste applicatie");
		
		JPanel Paneel = new WPIJ_Paneel();
		frame.setContentPane(Paneel);
		
		frame.setVisible(true);
		}
	}

De dobbelsteen klasse:
Code:
// datum 8-10-16
	public class Dobbelsteen {
		private int x1, y1, getal, wakken, ijsberen, pinguins; // added 20-10-16,		// Gooi gewijzigd naar getal added wakken beren penguins 26-10-16
	
			public Dobbelsteen(int x1, int y1){
				this.x1 = x1;
				this.y1 = y1;
			}
	
					public void teken(Graphics g){
	
						// tekent de dobbelsteen
						g.setColor(Color.BLACK);
						g.fillRoundRect(x1, y1, 100, 100, 25, 25);
						g.setColor(Color.WHITE);
						g.drawRoundRect(x1, y1, 100, 100, 25, 25);
						g.setColor(Color.WHITE);
						g.drawString(getal+ "", 100, 180);

						//teken de stippen
						if (getal == 1){
							g.fillOval(100, 100, 15, 15);
						}

						if(getal == 2){
							g.fillOval(70, 70, 15, 15);
							g.fillOval(130, 130, 15, 15);
						}

						if(getal == 3){
							g.fillOval(70, 70, 15, 15);
							g.fillOval(100, 100, 15, 15);
							g.fillOval(130, 130, 15, 15);
						}

						if(getal == 4){
							g.fillOval(70, 70, 15, 15);
							g.fillOval(70, 130, 15, 15);
							g.fillOval(130, 70, 15, 15);
							g.fillOval(130, 130, 15, 15);
						}
			
						if(getal == 5){
							g.fillOval(70, 70, 15, 15);
							g.fillOval(100, 100, 15, 15);
							g.fillOval(70, 130, 15, 15);
							g.fillOval(130, 70, 15, 15);
							g.fillOval(130, 130, 15, 15);
						}

						if(getal == 6){
							g.fillOval(70, 70, 15, 15);
							g.fillOval(70, 100, 15, 15);
							g.fillOval(70, 130, 15, 15);
							g.fillOval(130, 70, 15, 15);
							g.fillOval(130, 100, 15, 15);
							g.fillOval(130, 130, 15, 15);
						}		
						// repaint();
						// datum 8-10-16
					}
					
								// datum 26-10-16
								public void gooi() {
									getal = (int) (6 * Math.random() +1); // genereerd een random getal				
								}
					
									public int aantalWakken(){
										if(getal == 1 || getal == 3 || getal ==5){ // kijkt of wakken 1, 3 of 5 om vervolgend de waarde 1 mee tegeven
											wakken = 1; 
										}
										else{
											wakken = 0; // anders geeft hij de waarde 0
										}
										return wakken; // returnt de waarde van wakken.
									}
					
										public int aantalIJsberen(){
						   					if (getal == 3){ //kijkt of het getal 3 is geeft ijsberen de waarde 2
						   						ijsberen = 2;
						   					}
						   					else if (getal == 5) { //kijkt of het getal 5 is en geeft ijsberen de waarde 4
						   						ijsberen = 4;
						   					}
						   					else {
						   						ijsberen = 0; //anders geeft hij ijsberen de waarde 0
						   					}
					 
						   					return ijsberen; // returnt de waarde ijsberen die hij heeft megekregen
										}
					  
											public int aantalPinguins(){
						   
												if (getal == 1){
													pinguins = 6;
												}
					 
												else if (getal == 3){
													pinguins = 4;
												}	
					 
												else if (getal == 5) {
													pinguins = 2;
												}
												else {
													pinguins = 0;
												}
					 
												return pinguins;
											}
	}

Het Paneel:
Code:
public class WPIJ_Paneel extends JPanel{

	//Declateert de textvelden buttons en labels
	// datum 8-10-16
	// datum 20-10-16 namen aangepast naar aanvang van feedback en JtextField aantalStenen toegevoegd, JLabel toegevoegd
	private JTextField  oplossingWakken, oplossingIJsberen, oplossingPinguins, aantalStenen, uitkomstWakken, uitkomstIJsberen, uitkomstPinguins, aantalGooien, aantalGoedeGooien, aantalFouteGooien, aantalOplossingenOpgevraagd;    
	private JButton controleer, werp, geefOp;							
	private JLabel wakkenIJsberenPinguins, uwOplossing, oplossingWakkenLabel, oplossingIJsberenLabel, oplossingPinguinsLabel, aantalStenenLabel, geefOplossing, uitkomstWakkenLabel, uitkomstIJsberenLabel, uitkomstPinguinsLabel, aantalGooienLabel, aantalGoedeGooienLabel, aantalFouteGooienLabel, aantalOplossingenOpgevraagdLabel, score; //deleted Spel op 20-10-16 
	private Font wijpFont, uwOplossingFont, geefOplossingFont, scoreFont;
	// private int Gooi; weggehaald op 20-10-16
	// datum 8-10-16
	
		//declareerd en positioneert de dobbelstenen
		// datum 20-10-16
		private Dobbelsteen dobbelsteen1 = new Dobbelsteen(300,80); 
		private Dobbelsteen dobbelsteen2 = new Dobbelsteen(420,80);
		private Dobbelsteen dobbelsteen3 = new Dobbelsteen(540,80);
		// datum 20-10-16
		
		// datum 26-10-16
		private int aantal, controleer1, controleer2, controleer3;
		// datum 26-10-16
		
		//datum 27-10-16
		private Dobbelsteen dobbelsteen4 = new Dobbelsteen(660,80);
		// private Dobbelsteen dobbelsteen5 = new Dobbelsteen(540,80);
		// private Dobbelsteen dobbelsteen6 = new Dobbelsteen(540,80);
		// private Dobbelsteen dobbelsteen7 = new Dobbelsteen(540,80);
		// private Dobbelsteen dobbelsteen8 = new Dobbelsteen(540,80);
		//datum 27-10-16
									
				
		public WPIJ_Paneel(){ 					
			// datum 20-10-16
			setLayout(null);
			// datum 20-10-16
			
			//Attributen textvak
			// datum 8-10-16
			// datum 20-10-16 namen aangepast naar aanvang van feedback
			oplossingWakken = new JTextField (10); // Jou antwoord voor het aantal Wakken   			
			oplossingIJsberen = new JTextField (10); // Jou antwoord voor het aantal ijsberen			
			oplossingPinguins = new JTextField (10); // Jou antwoord voor het aantal Pinquins			
			uitkomstWakken = new JTextField (10); // De oplossing Wakken								
			uitkomstIJsberen = new JTextField(10); // De oplossing Ijsberen							
			uitkomstPinguins = new JTextField(10); // De oplossing Pinquins							
			aantalGooien = new JTextField(10); // Het aantal keer gegooid	
			aantalOplossingenOpgevraagd = new JTextField(10); // Het aantal oplossingen opgevraagd	
			aantalGoedeGooien = new JTextField(10); // Het aantal goede oplossingen					
			aantalFouteGooien = new JTextField(10); // Het aantal foute oplossingen	
			// datum 8-10-16
			
					// datum 20-10-16
					aantalStenen= new JTextField(10); //het aantal gekozen stenen
					aantalStenen.addActionListener(new AantalStenenHandler());  //datum 27-10-26
					aantalStenen.setHorizontalAlignment(JTextField.RIGHT);		//datum 27-10-16
					aantalStenen.setText("3");									//Datum 7-11-16
					// datum 20-10-16
			
			
			//Attributen Knopjes
			// datum 8-10-16
			// datum 20-10-16 namen aangepast naar aanvang van feedback
			controleer = new JButton("Controleer Oplossing"); //maakt de knop Controleer met de tekst Controleer oplossing er op.  
			
			werp = new JButton ("Werp de dobbelsteenen"); // maakt de knop werp met de tekst werp de dobbelsteen er op.
			werp.addActionListener(new WerpKnopHandler());
			
			geefOp = new JButton ("Geen idee! Geef de oplossing"); //maakt de knop geeftop met de tekst geen idee geeft de oplossing er op.	
			
			// datum 8-10-16
			
			//Attributen met labels
			// datum 8-10-16
			// datum 20-10-16 namen aangepast naar aanvang van feedback en label Spel weg gehaald
			wakkenIJsberenPinguins = new JLabel("Wakken, IJsberen en Penguins"); // Maakt een label aan genaamd Wakken, ijsberen en penquins (titel)
			uwOplossing = new JLabel("Uw oplossing"); // maakt een label genaamd Uw oplossing
			geefOplossing = new JLabel("Geef oplossing"); // maakt een label genaamd score overzicht
			score = new JLabel("Score overzicht"); // maakt een label genaamd Spel
			//Spel = new JLabel("Spel"); deleted 20-10-16
			// datum 8-10-16
			
	
					// datum 20-10-16
					oplossingWakkenLabel = new JLabel("Aantal wakken:");
					oplossingIJsberenLabel = new JLabel("Aantal ijsberen:");
					oplossingPinguinsLabel = new JLabel("Aantal pinguins:");
					aantalStenenLabel = new JLabel("Aantal dobbelstenen:");
					uitkomstWakkenLabel = new JLabel("Aantal wakken:");
					uitkomstIJsberenLabel = new JLabel("Aantal ijsberen:");
					uitkomstPinguinsLabel = new JLabel("Aantal pinguins:");
					aantalGooienLabel = new JLabel("Aantal keer gegooid:");
					aantalOplossingenOpgevraagdLabel = new JLabel("Aantal keren oplossing opgevraagd:");
					aantalGoedeGooienLabel = new JLabel("Aantal goede oplossingen:");
					aantalFouteGooienLabel = new JLabel("Aantal foute oplossingen:");
					// datum 20-10-16
			
					//set het font van een aantal labels
					// datum 20-10-16
					Font wijpFont = new Font("SansSerif", Font.PLAIN, 32);
					wakkenIJsberenPinguins.setFont(wijpFont);
					Font uwOplossingFont = new Font("SansSerif", Font.PLAIN, 22);
					uwOplossing.setFont(uwOplossingFont);
					Font geefOplossingFont = new Font("SansSerif", Font.PLAIN, 22);
					geefOplossing.setFont(geefOplossingFont);
					Font scoreFont = new Font("SansSerif", Font.PLAIN, 22);
					score.setFont(scoreFont);
					// datum 20-10-16
			
			
			//Laat het attribuut op het scherm zien
			// datum 8-10-16
			// datum 20-10-16 namen aangepast naar aanvang van feedback en labels toegevoegd
			add(oplossingWakken);
			add(oplossingIJsberen);
			add(oplossingPinguins);
			add(aantalStenen);
			add(uitkomstWakken);
			add(uitkomstIJsberen);
			add(uitkomstPinguins);
			add(aantalGooien);
			add(aantalGoedeGooien);
			add(aantalFouteGooien);
			add(aantalOplossingenOpgevraagd);
			add(controleer);
			add(werp);
			add(geefOp);
			add(wakkenIJsberenPinguins);
			add(uwOplossing);
			add(oplossingWakkenLabel);
			add(oplossingIJsberenLabel);
			add(oplossingPinguinsLabel);
			add(aantalStenenLabel);
			add(geefOplossing);
			add(uitkomstWakkenLabel);
			add(uitkomstIJsberenLabel);
			add(uitkomstPinguinsLabel);
			add(aantalGooienLabel);
			add(aantalOplossingenOpgevraagdLabel);
			add(aantalGoedeGooienLabel);
			add(aantalFouteGooienLabel);
			add(score);
			// weggehaald add(Spel); 20-10-16
			// datum 8-10-16
			
					//Bepaalt de plaats en afmeting van de componenten
					// datum 20-10-16
					//titel
					wakkenIJsberenPinguins.setBounds(150, 10, 500, 50);	  //done					
					werp.setBounds(280, 200, 200, 20);                     //done
					aantalStenen.setBounds(650, 200, 50, 20);			  //done
					aantalStenenLabel.setBounds(500, 200, 150, 20);		  //done
		
					//jou oplossing
					uwOplossing.setBounds(20, 50, 200, 30);
					oplossingWakken.setBounds(150, 80, 50, 20);
					oplossingWakkenLabel.setBounds(20, 80, 200, 20);
					oplossingIJsberen.setBounds(150, 100, 50, 20);
					oplossingIJsberenLabel.setBounds(20, 100, 200, 20);
					oplossingPinguins.setBounds(150, 120, 50, 20);
					oplossingPinguinsLabel.setBounds(20, 120, 200, 20);
					controleer.setBounds(20, 200, 200, 20);
		
					//de uitkomst
					geefOplossing.setBounds(20, 250, 200, 30);
					uitkomstWakken.setBounds(170, 280, 50, 20);
					uitkomstWakkenLabel.setBounds(20, 280, 200, 20);
					uitkomstIJsberen.setBounds(170, 300, 50, 20);
					uitkomstIJsberenLabel.setBounds(20, 300, 200, 20);
					uitkomstPinguins.setBounds(170, 320, 50, 20);
					uitkomstPinguinsLabel.setBounds(20, 320, 200, 20);
					geefOp.setBounds(20, 340, 200, 20);
		
					//de score
					score.setBounds(250, 250, 200, 30);
					aantalGooien.setBounds(500, 280, 50, 20);
					aantalGooienLabel.setBounds(250, 280, 300, 20);
					aantalOplossingenOpgevraagd.setBounds(500, 300, 50, 20);
					aantalOplossingenOpgevraagdLabel.setBounds(250, 300, 300, 20);
					aantalGoedeGooien.setBounds(500, 320, 50, 20);
					aantalGoedeGooienLabel.setBounds(250, 320, 300, 20);
					aantalFouteGooien.setBounds(500, 340, 50, 20);
					aantalFouteGooienLabel.setBounds(250, 340, 300, 20);
					// datum 20-10-16
		
		}
					// datum 20-10-16
					public void paintComponent(Graphics g){ //maakt de stenen aan afhankelijk van het aantal dat gekozen is in textfield aantalStenen
					super.paintComponent(g);
										
					 if (aantal == 3){
					 dobbelsteen1.teken(g);
					 dobbelsteen2.teken(g);
					 dobbelsteen3.teken(g);}
					
					 else if (aantal == 4){
					 dobbelsteen1.teken(g);
					 dobbelsteen2.teken(g);
					 dobbelsteen3.teken(g);
					 dobbelsteen4.teken(g);}
					
					// else if (aantal == 5){
					// dobbelsteen1.teken(g);
					// dobbelsteen2.teken(g);
					// dobbelsteen3.teken(g);
					// dobbelsteen4.teken(g);
					// dobbelsteen5.teken(g);}
					
					// else if (aantal == 6)
					// dobbelsteen1.teken(g);
					// dobbelsteen2.teken(g);
					// dobbelsteen3.teken(g);
					// dobbelsteen4.teken(g);
					// dobbelsteen5.teken(g);
					// dobbelsteen6.teken(g);}
					
					// else if (aantal == 7)
					// dobbelsteen1.teken(g);
					// dobbelsteen2.teken(g);
					// dobbelsteen3.teken(g);
					// dobbelsteen4.teken(g);
					// dobbelsteen5.teken(g);
					// dobbelsteen6.teken(g);
					// dobbelsteen7.teken(g);}
					
					// else if (aantal == 8)
					// dobbelsteen1.teken(g);
					// dobbelsteen2.teken(g);
					// dobbelsteen3.teken(g);
					// dobbelsteen4.teken(g);
					// dobbelsteen5.teken(g);
					// dobbelsteen6.teken(g);
					// dobbelsteen7.teken(g);
					// dobbelsteen8.teken(g);}
					 }
					// datum 20-10-16
					
							
							// datum 27-10-16
							class AantalStenenHandler implements ActionListener{
								public void actionPreformed(ActionEvent e){
									int getal = Integer.parseInt (aantalStenen.getText()); //haalt de text op uit aantalStenen
							        if (getal == 3 || getal == 4 ||getal == 5|| getal == 6|| getal == 7|| getal == 8){ //
							            aantal = getal;
							            aantalStenen.setBackground (Color.GRAY); //als het bovenstaande waar is word de achtergrond kleur van het textvak grijs
							            repaint();
							        }
							        else
							            aantalStenen.setBackground (Color.RED); //als het iets anders is als het bovenstaande kleurt hij het textvak rood
								}

								
								// 27-10-16
								@Override  // ik weet dat het vast hangt aan AantalStenenHandler en dat het bovenstaande overschrijft als het uitgevoerd word. for some reason ik het er niet in heb staan werkt mijn code niet en doet het niets.
								public void actionPerformed(ActionEvent arg0) {
									int getal = Integer.parseInt (aantalStenen.getText());
							        if (getal == 3 || getal == 4 ||getal == 5|| getal == 6|| getal == 7|| getal == 8){
							            aantal = getal;
							            aantalStenen.setBackground (Color.GRAY);
							            repaint();
							        }
							        else
							            aantalStenen.setBackground (Color.RED);
									}
								}
							// datum 27-10-16
							class WerpKnopHandler implements ActionListener{ //gooid de dobbelstenen afhankelijk van het aantal dat gekozen is bij het deel hier boven
							    public void actionPerformed(ActionEvent e){
							            if (aantal == 3){
							            dobbelsteen1.gooi();
							            dobbelsteen2.gooi();
							            dobbelsteen3.gooi();
							        }
							 
							        else if (aantal == 4){
							            dobbelsteen1.gooi();
							            dobbelsteen2.gooi();
							            dobbelsteen3.gooi();
							           // dobbelsteen4.gooi();
							        }
							 
							        else if (aantal == 5){
							            dobbelsteen1.gooi();
							            dobbelsteen2.gooi();
							            dobbelsteen3.gooi();
							           // dobbelsteen4.gooi();
							           // dobbelsteen5.gooi();
							        }
							 
							        else if (aantal == 6){
							            dobbelsteen1.gooi();
							            dobbelsteen2.gooi();
							            dobbelsteen3.gooi();
							            //dobbelsteen4.gooi();
							            //dobbelsteen5.gooi();
							            //dobbelsteen6.gooi();
							        }
							 
							        else if (aantal == 7){
							            dobbelsteen1.gooi();
							            dobbelsteen2.gooi();
							            dobbelsteen3.gooi();
							           // dobbelsteen4.gooi();
							           // dobbelsteen5.gooi();
							           // dobbelsteen6.gooi();
							           // dobbelsteen7.gooi();
							        }
							 
							        else if (aantal == 8){
							            dobbelsteen1.gooi();
							            dobbelsteen2.gooi();
							            dobbelsteen3.gooi();
							           // dobbelsteen4.gooi();
							           // dobbelsteen5.gooi();
							           // dobbelsteen6.gooi();
							           // dobbelsteen7.gooi();
							           // dobbelsteen8.gooi();
							        }
							        //27-10-16
							            
							            //7-11-16
							            aantalStenen.setText ("3");
							            oplossingWakken.setText ("0");
							            oplossingIJsberen.setText ("0");
							            oplossingPinguins.setText ("0");
							            uitkomstWakken.setText ("");
							            uitkomstIJsberen.setText ("");
							            uitkomstPinguins.setText ("");
							            oplossingWakken.setBackground (Color.WHITE);
							            oplossingIJsberen.setBackground (Color.WHITE);
							            oplossingPinguins.setBackground (Color.WHITE);
							            repaint();
							            //7-11-16
							    }
							  }
	}
 
Oke, inmiddels heb ik het probleem in mijn dobbelsteen klasse het tekenen van de stenen op de juiste plaats met y1+, X1+waarde 10, 40, of 70 aan vast te hangen opgelost.
 
stel je code er zo zou uitzien backup maken van je versie en gewoon eens uittesten wat dit doet.
Code:
package helpmij;
// datum 8-10-16
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Dobbelsteen extends JPanel{
    private int x1, y1, getal, wakken, ijsberen, pinguins; // added 20-10-16,		// Gooi gewijzigd naar getal added wakken beren penguins 26-10-16
    public Dobbelsteen(int x1, int y1){
        this.x1 = x1;
        this.y1 = y1;
    }
    public void paint(Graphics g){
        super.paint(g);
	Graphics2D g2d = (Graphics2D) g;
        // tekent de dobbelsteen
        g2d.setColor(Color.BLACK);
//.... verder doen
        g.fillRoundRect(x1, y1, 100, 100, 25, 25);
        g.setColor(Color.WHITE);
        g.drawRoundRect(x1, y1, 100, 100, 25, 25);
        g.setColor(Color.WHITE);
        g.drawString(getal+ "", 100, 180);
        //teken de stippen
        if(getal%2!=0){
            g.fillOval(100, 100, 15, 15);
        }
        if(getal == 2 || getal == 3){
            g.fillOval(70, 70, 15, 15);
            g.fillOval(130, 130, 15, 15);
        }
        if(getal > 3){
            g.fillOval(70, 70, 15, 15);
            g.fillOval(70, 130, 15, 15);
            g.fillOval(130, 70, 15, 15);
            g.fillOval(130, 130, 15, 15);
        }
        if(getal == 6){
            g.fillOval(70, 100, 15, 15);
            g.fillOval(130, 100, 15, 15);
        }		
        // repaint();
        // datum 8-10-16
    }
    // datum 26-10-16
    public void gooi() {
        getal = (int) (6 * Math.random() +1); // genereerd een random getal				
    }
    public int aantalWakken(){
        if(getal == 1 || getal == 3 || getal ==5){ // kijkt of wakken 1, 3 of 5 om vervolgend de waarde 1 mee tegeven
            return 1; 
        }
        return 0; // returnt de waarde van wakken.
    }
    public int aantalIJsberen(){
        if (getal == 3){ //kijkt of het getal 3 is geeft ijsberen de waarde 2
            return 2;
        }else if (getal == 5) { //kijkt of het getal 5 is en geeft ijsberen de waarde 4
            return 4;
        }
        return 0; //anders geeft hij ijsberen de waarde 0
    }
    public int aantalPinguins(){
        if (getal == 1){
            return 6;
        }else if (getal == 3){
            return 4;
        }else if (getal == 5) {
            return 2;
        }
        return 0;
    }
}
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan