Gå til innhold

Kabal - Hvordan gjøre kortene klikkbare?


Anbefalte innlegg

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
Videoannonse
Annonse

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 av HeadBlast
Lenke til kommentar

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...