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 :).
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 :-)
mam kod gomoku jakbys chcial
pozdrawiam
Jasne, że chcę :). Miałabym się na czym wzorować. Jak możesz to podeślij na [email protected]. Z góry dzieki :)
ok, ale to po weekendzie, bo lapa do serwisu oddalem :P
pozdrawiam
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
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
....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?
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