HeadBlast Skrevet 3. mars 2011 Del Skrevet 3. mars 2011 Hei! Skal programmere et kabal spill. Tenkte å bruke: Image[] pic = {Toolkit.getDefaultToolkit().getImage... og legge alle 52 bildene som trengs i den tabellen. Videre tenkte jeg at det skal fungere slik at man trykker på det kortet man vil flytte, og hvor det skal flyttes. Og om dette er et lovlig trekk, så vil kortet bli flyttet dit. Problemet er, hvordan lage knapper av bildene? Altså en lytter som registrerer når ett bilde er trykt på. Mvh HeadBlast. Lenke til kommentar
miXer Skrevet 4. mars 2011 Del Skrevet 4. mars 2011 Du kan bruke en JButton med bilde på. Lenke til kommentar
HeadBlast Skrevet 4. mars 2011 Forfatter Del Skrevet 4. mars 2011 (endret) Du kan bruke en JButton med bilde på. Prøvde det ved å opprette en JButton i Klassen Vindu som extends JFrame: private JButton myButton = new JButton(""); add(myButton); CheckboxLytter lytter = new CheckboxLytter(); myButton.addActionListener(lytter); og i klassen tegning som extends JPanel: ImageIcon imageicon = new ImageIcon(pic[12]); myButton.setIcon(imageicon); på pic[] er en tabell av Image. Men dette fungerte ikke.... Endret 4. mars 2011 av HeadBlast Lenke til kommentar
HeadBlast Skrevet 4. mars 2011 Forfatter Del Skrevet 4. mars 2011 Fikk det til nå når jeg plasserte add(myButton); CheckboxLytter lytter = new CheckboxLytter(); myButton.addActionListener(lytter); i klassen tegning:) Lenke til kommentar
delfin Skrevet 6. mars 2011 Del Skrevet 6. mars 2011 Du vil nok helst lage en klasse som heter f.eks "Kort" som extender en tegnbar klasse, f.eks JPanel, og så skrive paint-metoden selv. For å gjøre den klikkbar implementerer du MouseListener. Så lager du en array av Kort[]. F.eks kan kort se slik ut: Class Kort extends JPanel implements MouseListener { int verdi; // 1-13 String farge; // hjerte etc. Image bilde; public Kort(int verdi, String farge) { this.verdi = verdi; // sett farge, og sett rett bilde her } // resten av klassen } Du lærer mye mer av å prøve å gjøre det litt riktig Lenke til kommentar
HeadBlast Skrevet 8. mars 2011 Forfatter Del Skrevet 8. mars 2011 Jepp! Fant ut det selv også! Har også et spørsmål til, jeg bruker jo: Toolkit.getDefaultToolkit().getImage("r8.png") For å hente et bilde, men jeg vil kunne ha bare Image i konstruktøren, altså: Kort(Image bilde) og så hente verdi og fargen utifra navnet. "r8.png" er jo f. eks ruter 8. Men finner ingen metoder i java api'et som kan gjøre noe lignende med objekt av Image. Mvh HeadBlast Lenke til kommentar
delfin Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 La bildet tilhøre "Kort"-klassen. I konstruktøren jeg lagde over: Toolkit.getDefaultToolkit().getImage(farge + verdi + ".png"): Lenke til kommentar
HeadBlast Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 Takk, det fungerte utmerket! Nå har jeg ett nytt problem:D Jeg lager en Korthaug klasse kalt haug: import java.awt.Graphics; import java.util.LinkedList; import java.util.List; public abstract class Haug { protected List haug; protected int x; protected int y; public Haug(int nyX, int nyY) { x = nyX; y = nyY; } public boolean empty() { return haug.isEmpty(); } public Kort toppKort() { if(!empty()) { return (Kort)haug.get(haug.size()-1); } else return null; } public Kort pop() { if(!empty()) { return (Kort)haug.remove(haug.size()-1); } else return null; } public boolean inkulderer(int tx, int ty) { return x<=tx && tx<=x + Kort.bredde() && y <= ty && ty <= y + Kort.høyde(); } public void addKort(Kort ettKort) { haug.add(ettKort); } public void tegn(Graphics g) { if(empty()) { g.drawRect(x, y, Kort.bredde(), Kort.høyde()); } else toppKort().tegnKort(g,x,y); } public abstract boolean kanTa(Kort ettKort); } Så lager jeg en subklasse, kalt SparHaug public class SparHaug extends Haug { public SparHaug(int x, int y) { super(x,y); } public boolean kanTa(Kort ettKort) { if(empty()) { if(ettKort.finnType().equals("e01")) { addKort(ettKort); return true; } else return false; } if(ettKort.finnType().charAt(0) == toppKort().finnType().charAt(0) && ettKort.finnVerdi() == toppKort().finnVerdi() +1) { addKort(ettKort); return true; } else return false; } } For å teste dette, vil jeg sjekke om empty() metoden returnerer true nå jeg bare har lagd et objekt: SparHaug1 spar = new SparHaug1(50, 50); For da skal jo listen være tom, men jeg får: java.lang.NullPointerException. Dette får jeg også om jeg skal prøve å adde et kort eller whatever.. Any ideas? Mvh HeadBlast =) Lenke til kommentar
HeadBlast Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 Fant ut av det, null problemo! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå