Hej, jeg er i gang med at programmere et spil i Jgrasp med Java. Det er det klassiske Simon Says, det er til en projekt opgave på DTU, som jeg skal aflevere den 15-6, så jeg ville sætte pris på hvis i kunne hjælpe mig hurtigst muligt.
Spillet er opdelt i 4 klasser.. Problemet skal findes i klassen spilknapper. Computeren svarer og generere ét nyt tal hver gang man trykker på en knap, men det er meningen at man skal kunne nå at trykke på de samme knapper som computeren lyser op, inden at computeren begynder at lyse knapperne op igen.
Her er et eksempel på hvordan spillet skal køre.
http://www.lilgames.com/simon.shtmlHvis i her spørgsmål, kan i skrive på jelles_corner@ofir.dk eller inde i forumet.
Det ville være rigtig godt hvis i gad at adde mig til msn, så kunne jeg måske bedre formulere problemet.
Jeg skal nok være klar til svare.
På forhånd tak!
Her er hvordan det ser ud nu:
////////////////////////////////////////
boolean ens=false;
if (liste.size()==svarliste.size())
{
ens=true;
for (int j=0;j<liste.size();j++)
{
if(liste.get(j)!=svarliste.get(j))
{
ens=false;
timer.stop();
System.out.println("Wrong! You lose!");
label.setText("Wrong! you lose!Try again");
liste.clear();
break; } } }
Så, jeg skal få spillet til at sammenligne den liste med tal(iform af knapper der blinker) som computeren generere og de tal(knapper) som spilleren svare, men lige nu, går computeren i gang med generere et nyt tal, så straks man trykke på 1 knap, og meningen er at man skal nå at svare på hele kombinationen.
Skriv hvis der er spørgsmål eller hvis i skal have klasserne. Jeg tjekker hele tiden forummet.
Nå, jeg smider resten af koder op nu, så kan i jo selv køre programmet
Spilramme.java
import javax.swing.*;
import java.awt.*;
public class Spilramme
{
public static void main (String[] args)
{
JFrame ramme = new JFrame();
ramme.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Spilknapper kp = new Spilknapper();
ramme.getContentPane().add(kp);
ramme.pack();
ramme.setVisible(true);
}
}
Spilknapper.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class Spilknapper extends JPanel
{
JButton Rød;
JButton Grøn;
JButton Blå;
JButton Gul;
JButton Start;
JLabel label, label2;
int i=0, index=0;
ImageIcon r1,r2,gr1,gr2,b1,b2,g1,g2,star1;
Waiter a, b, c, d;
Timer timer;
TalGenerator2 tg;
ArrayList<Integer> liste, svarliste;
public Spilknapper()
{
setBackground (Color.white);
timer = new Timer(1000, new TimerLytter());
tg = new TalGenerator2();
svarliste = new ArrayList<Integer>();
r1= new ImageIcon ("rødknap0.jpg");
r2= new ImageIcon ("rødknap1.jpg");
gr1= new ImageIcon ("grønknap0.jpg");
gr2= new ImageIcon ("grønknap1.jpg");
b1= new ImageIcon ("blåknap0.jpg");
b2= new ImageIcon ("blåknap1.jpg");
g1= new ImageIcon ("gulknap0.jpg");
g2= new ImageIcon ("gulknap1.jpg");
Rød = new JButton(r1);
Grøn = new JButton(gr1);
Blå = new JButton(b1);
Gul = new JButton(g1);
label = new JLabel("");
label2 = new JLabel("Du har svaret: ");
setLayout (new GridLayout(4,1));
star1= new ImageIcon ("startknap1.jpg");
Start = new JButton(star1);
Start.addActionListener(new StartListener());
a = new Waiter(Rød,r2,r1);
b = new Waiter(Grøn,gr2,gr1);
c = new Waiter(Blå,b2,b1);
d = new Waiter(Gul,g2,g1);
Rød.addActionListener(new Listener());
Grøn.addActionListener(new Listener());
Blå.addActionListener(new Listener());
Gul.addActionListener(new Listener());
add(Rød);
add(Grøn);
add(Blå);
add(Gul);
add(label);
add(Start); add(label2);
liste=tg.hentListe();
}
private class TimerLytter implements ActionListener
public void actionPerformed(ActionEvent e)
{
System.out.println("index: " + index);
if(index<liste.size())
{
if(liste.get(index)==1)
{
a.blink();
}
else if (liste.get(index)==2)
{
b.blink();
}
else if (liste.get(index)==3)
{
c.blink();
}
else if (liste.get(index)==4)
{
d.blink();
}
index++;
}
}
}
private class StartListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
timer.start();
}
}
private class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==Rød)
{
a.blink();
svarliste.add(1);
}
if (e.getSource()==Grøn)
{
b.blink(); svarliste.add(2);
}
if (e.getSource()==Blå)
{
c.blink(); svarliste.add(3);
}
if (e.getSource()==Gul)
{
d.blink(); svarliste.add(4);
}
boolean ens=false;
if (liste.size()==svarliste.size())
{
ens=true;
for (int j=0;j<liste.size();j++)
{
if(liste.get(j)!=svarliste.get(j))
{
ens=false;
timer.stop();
System.out.println("Wrong! You lose!");
label.setText("Wrong! you lose!Try again");
liste.clear();
break;
}
}
}
liste = tg.hentListe();
index=0;
i++;
}
}
}
Talgenerator2.java
import java.util.*;
import java.util.Scanner;
public class TalGenerator2
{
ArrayList<Integer> liste = new ArrayList<Integer>();
private int count, currentNumber;
private Random generator;
public TalGenerator2()
{
generator = new Random ();
int count=0;
}
public ArrayList<Integer> hentListe()
{
count++;
currentNumber = generator.nextInt(4) +1;
liste.add(currentNumber);
System.out.println(liste);
}
public int hentListeStørrelse()
{
return liste.size();
}
}
Waiter.java
import javax.swing.*;
import java.awt.event.*;
class Waiter
{
JButton knap;
ImageIcon flash;
ImageIcon original;
Timer timer;
public Waiter(JButton knap, ImageIcon flash, ImageIcon original)
{
this.flash=flash; this.original=original;
this.knap=knap;
timer = new Timer(200, new StopKnap());
}
public void blink()
{
timer.start();
System.out.println("Waiter på");
knap.setIcon(flash);
knap.setEnabled(false);
}
private class StopKnap implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Waiter af");
knap.setIcon(original);
knap.setEnabled(true);
timer.stop();
}
}
}
Alle koder virker, de skal blot Compiles og så kan det være at nogle enkelte koder skal rykkes op på en linje, da det ikke er helt optimalt at skrive længere koder her.
Spillet skal køres fra Spilramme.java.
Hvis der er problemer, må i skrive.
Men nu kan i måske bedre selv se problemet hvis i kører spillet.
Håber at i kan hjælpe
Indlæg senest redigeret d. 09.05.2009 12:06 af Bruger #14966