Plansza w javie (gra kulki)

0

Hej. Mam do zrobienia projekt w javie - gre w kulki. Z java miałam juz do czynienia, ale nigdy jeszcze nie robiłam gry. Dlatego chciałam sie poradzić. Na początku zastanawiam się jak zrobic planszę 9x9, przeglądając sieć natknęłam się na rozwiązanie z buttonami jako poszczególnymi polami planszy. Jest to dobre rozwiązanie czy lepiej zastosować coś innego? Z góry dziękuję za wszelkie podpowiedzi i rady :).

0

Możesz spokojnie użyć buttonów( np z ikonkami) a po naciśnięciu buttonu zmieniać ikonę. Do ułożenia buttonów użyj menadżera GridLayout który robi coś w stylu tabelki z elementami :-)

0

mam kod gomoku jakbys chcial

pozdrawiam

0

Jasne, że chcę :). Miałabym się na czym wzorować. Jak możesz to podeślij na [email protected]. Z góry dzieki :)

0

ok, ale to po weekendzie, bo lapa do serwisu oddalem :P

pozdrawiam

0

mozesz takze zrobic sobie tlo graficzne np w photoshopie, kulki transparentne takze w photoshopie i juz w javie na sztywno poustawiac x i y (ze np kulka ma byc na polu [1][1] to grafika kulki musi byc na danym x i y. ja zrobilem tak szachy i wszystko dzialalo jak trzeba :) podejscie troche strukturalne ale latwe do zrozumienia. pozdrawiam

0
Freakman napisał(a)

mozesz takze zrobic sobie tlo graficzne np w photoshopie, kulki transparentne takze w photoshopie i juz w javie na sztywno poustawiac x i y (ze np kulka ma byc na polu [1][1] to grafika kulki musi byc na danym x i y. ja zrobilem tak szachy i wszystko dzialalo jak trzeba :) podejscie troche strukturalne ale latwe do zrozumienia. pozdrawiam

A ile czasu robiłeś te 768 rysunków?
Dobrze, że nie wymyśliłeś, iż do każdej sytuacji na planszy będziesz miał oddzielny rysunek. :-D

0

....moze lepiej bylo zostawic to bez komentarza..rysunkow w szachach mialem tyle co plansza + figury (pozniej zmienic kolor) wiec nie 768. Jesli nie rozumiesz ideii tego pomyslu to moze nie powinienes sie wypowiadac?

0

ok, przepraszam, ze tyle to trwalo, ale laptop w koncu dotarl :P
oto obiecywany kod:

public class Panel extends JPanel{
	private static final long serialVersionUID = 4797180680181137952L;
	private int width;
	private int height;
	private ArrayList<Figura> figury;
	public Panel(int width, int height) {
		super();
		this.width = width;
		this.height = height;
		figury=new ArrayList<Figura>();
	}
	public void addFigura(Figura f){
		figury.add(f);
		repaint();
	}
	public void clear(){
		figury.clear();
		repaint();
	}
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2=(Graphics2D)g;
		g2.setBackground(Color.WHITE);
		g2.setColor(Color.BLUE);
		for (int i = 0; i <=width; i+=20) {
			g2.drawLine(0,i, height, i);
		}
		for (int i = 0; i <=height; i+=20) {
			g2.drawLine(i,0,i,  width);
		}
		for (int i = 0; i < figury.size(); i++) {
			g2.setColor(Color.RED);
			figury.get(i).draw(g2);
		}
	}
	public boolean contains(Point p){
		boolean result=false;
		for (int i = 0; i < figury.size()&&!result; i++) {
			if(figury.get(i).contains(p.x, p.y)){
				result=true;
			}
		}
		return result;
	}
}
public abstract class Figura implements Serializable{
	private Rectangle2D area;
	protected int x;
	protected int y;
	public Figura(Point p){
		this.x=p.x;
		this.y=p.y;
		area=new Rectangle2D.Float(p.x,p.y,20,20);
	}
	
	public boolean contains(int x, int y) {
		return area.contains(x, y);
	}
	public int getX(){
		return x; 
	}
	public int getY(){
		return y; 
	}
	abstract public void draw(Graphics2D g2);
}

class Kolko extends Figura{
	private static final long serialVersionUID = 7153846813565405611L;
	public Kolko(Point p){
		super(p);
	}
	public void draw(Graphics2D g2) {
		g2.drawOval(x+5, y+5, 10, 10);		
	}
}

class Krzyzyk extends Figura{
	private static final long serialVersionUID = -1984051710790995083L;
	public Krzyzyk(Point p){
		super(p);
	}
	public void draw(Graphics2D g2) {
		g2.drawLine(x+5, y+5,x+15, y+15);
		g2.drawLine(x+5, y+15, x+15, y+5);
	}
}

panel umieszczamy na JFrame

mam nadzieje, ze sie przyda

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1