Spiel in Java
lima-city → Forum → Programmiersprachen → Java
auto
beurteilen
boxen
code
dimension
fertig schreiben
import
jemand
label
null
polygon
problem
programm
punkt
reihe
roman
spiel
swing
system
url
-
Hallo Community :)
Hier mein Problem: Ich soll ein Spiel in Java programmieren, jedoch klappt das nicht so ganz.
Das Spiel soll so aussehen :
http://imageshack.us/photo/my-images/580/bildns.jpg/
Vom Design her ist mein Programm fertig, es macht jedoch noch nicht ganz viel. Es soll so funktionieren dass wenn man ein Polygonfeld anklickt ein blauer (oder orangefarbiger) Punkt im Feld erscheint, und dass wenn das passiert der jeweils andere Spieler dran ist (d.h. es erscheint beim nächten Klicken die jeweils andere Farbe).
Ich poste euch den Code; er ist nicht sehr sauber (wie gesagt, bin Anfänger ;) ) :
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; class AboutDialog extends JDialog { // puer Problemer dran /** * */ private static final long serialVersionUID = 8169178928427118906L; public AboutDialog() { initUI(); } public final void initUI() { setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); //add(Box.createRigidArea(new Dimension(0, 10))); // ImageIcon icon = new ImageIcon("notes.png"); //JLabel label = new JLabel(icon); // label.setAlignmentX(0.5f); // add(label); add(Box.createRigidArea(new Dimension(0, 10))); JLabel name1 = new JLabel("Help & Rules"); JLabel name2 = new JLabel("bla bla bla bla bla bla bla bla bla "); name1.setFont(new Font("Serif", Font.BOLD, 13)); name2.setFont(new Font("Times New Roman", Font.PLAIN, 13)); //name1.setBounds(getWidth()/6, getHeight()/6, 0, 100); name1.setAlignmentX(0.5f); name2.setAlignmentX(0.4f); name2.setAlignmentY(0.4f); add(name1); add(name2); add(Box.createRigidArea(new Dimension(0, 50))); JButton close = new JButton("Close"); close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { dispose(); } }); close.setAlignmentX(0.5f); add(close); setModalityType(ModalityType.APPLICATION_MODAL); setTitle("Help & Rules"); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setBounds(200, 100, 300, 400); //setLocationRelativeTo(null); //setSize(300, 600); } } class f extends JFrame { /** * */ private static final long serialVersionUID = 1L; public f(){ JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu fileMenu = new JMenu("File"); JMenu helpMenu = new JMenu("Help"); menuBar.add(fileMenu); menuBar.add(helpMenu); JMenuItem newAction = new JMenuItem("New..."); JMenuItem exitAction = new JMenuItem("Exit"); JMenuItem helpAction = new JMenuItem("Help..."); JMenuItem aboutAction = new JMenuItem("About"); fileMenu.add(newAction); fileMenu.addSeparator(); fileMenu.add(exitAction); helpMenu.add(helpAction); helpMenu.addSeparator(); helpMenu.add(aboutAction); newAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println(""); } }); exitAction.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0){ System.exit(0); } }); helpAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { AboutDialog ad = new AboutDialog(); ad.setVisible(true); } }); } } public class my_hex_game extends JPanel { /** * */ private static final long serialVersionUID = 1L; @Override protected void paintComponent(Graphics g) { JLabel Punkt = new JLabel(); Punkt.setOpaque(true); Punkt.setBackground(Color.black); Punkt.setBounds(20, 20, 200, 200); int hoehe, breite; breite=getWidth()/2; // mittelste Reihe hoehe=getHeight()/2; for (int i=0;i<12;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<5) breite-=50; else if (i==5)breite=getWidth()/2; else if (i>5)breite+=50; } breite=getWidth()/2-25; //mittelste Reihe + 1 hoehe=getHeight()/2-13; for (int i=0;i<10;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<4) breite-=50; else if (i==4) breite=getWidth()/2+25; else if (i>4) breite+=50; } breite=getWidth()/2; // mittelste Reihe + 2 hoehe=getHeight()/2-26; for (int i=0;i<10;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<4) breite-=50; else if (i==4)breite=getWidth()/2; else if (i>4)breite+=50; } breite=getWidth()/2-25; // mittelste Reihe -1 hoehe=getHeight()/2+13; for (int i=0;i<10;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<4) breite-=50; else if (i==4) breite=getWidth()/2+25; else if (i>4) breite+=50; } breite=getWidth()/2; // mittelste Reihe -2 hoehe=getHeight()/2+26; for (int i=0;i<10;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<4) breite-=50; else if (i==4)breite=getWidth()/2; else if (i>4)breite+=50; } breite=getWidth()/2-25; // mittelste Reihe -3 hoehe=getHeight()/2+39; for (int i=0;i<8;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<3) breite-=50; else if (i==3) breite=getWidth()/2+25; else if (i>3) breite+=50; } breite=getWidth()/2-25; // mittelste Reihe -5 hoehe=getHeight()/2+65; for (int i=0;i<6;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<2) breite-=50; else if (i==2) breite=getWidth()/2+25; else if (i>2) breite+=50; } breite=getWidth()/2-25; // mittelste Reihe -7 hoehe=getHeight()/2+91; for (int i=0;i<4;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<1) breite-=50; else if (i==1) breite=getWidth()/2+25; else if (i>1) breite+=50; } // mittelste Reihe -9 PolygonWithEgdes.drawNeck(g,getWidth()/2-25,getHeight()/2+117,16,6,false); PolygonWithEgdes.drawNeck(g,getWidth()/2-25,getHeight()/2+117,14,6,true); PolygonWithEgdes.drawNeck(g,getWidth()/2+25,getHeight()/2+117,16,6,false); PolygonWithEgdes.drawNeck(g,getWidth()/2+25,getHeight()/2+117,14,6,true); breite=getWidth()/2-25; //mittelste Reihe + 3 hoehe=getHeight()/2-39; for (int i=0;i<8;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<3) breite-=50; else if (i==3) breite=getWidth()/2+25; else if (i>3) breite+=50; } breite=getWidth()/2-25; //mittelste Reihe + 5 hoehe=getHeight()/2-65; for (int i=0;i<6;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<2) breite-=50; else if (i==2) breite=getWidth()/2+25; else if (i>2) breite+=50; } breite=getWidth()/2-25; //mittelste Reihe + 7 hoehe=getHeight()/2-91; for (int i=0;i<4;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<1) breite-=50; else if (i==1) breite=getWidth()/2+25; else if (i>1) breite+=50; } //mittelste Reihe +9 PolygonWithEgdes.drawNeck(g,getWidth()/2-25,getHeight()/2-117,16,6,false); PolygonWithEgdes.drawNeck(g,getWidth()/2-25,getHeight()/2-117,14,6,true); PolygonWithEgdes.drawNeck(g,getWidth()/2+25,getHeight()/2-117,16,6,false); PolygonWithEgdes.drawNeck(g,getWidth()/2+25,getHeight()/2-117,14,6,true); breite=getWidth()/2; // mittelste Reihe + 4 hoehe=getHeight()/2-52; for (int i=0;i<8;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<3) breite-=50; else if (i==3)breite=getWidth()/2; else if (i>3)breite+=50; } breite=getWidth()/2; // mittelste Reihe - 4 hoehe=getHeight()/2+52; for (int i=0;i<8;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<3) breite-=50; else if (i==3)breite=getWidth()/2; else if (i>3)breite+=50; } breite=getWidth()/2; // mittelste Reihe +6 hoehe=getHeight()/2-78; for (int i=0;i<6;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<2) breite-=50; else if (i==2)breite=getWidth()/2; else if (i>2)breite+=50; } breite=getWidth()/2; // mittelste Reihe -6 hoehe=getHeight()/2+78; for (int i=0;i<6;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<2) breite-=50; else if (i==2)breite=getWidth()/2; else if (i>2)breite+=50; } breite=getWidth()/2; // mittelste Reihe +8 hoehe=getHeight()/2-104; for (int i=0;i<4;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<1) breite-=50; else if (i==1)breite=getWidth()/2; else if (i>1)breite+=50; } breite=getWidth()/2; // mittelste Reihe -8 hoehe=getHeight()/2+104; for (int i=0;i<4;i++) { PolygonWithEgdes.drawNeck(g,breite,hoehe,16,6,false); PolygonWithEgdes.drawNeck(g,breite,hoehe,14,6,true); if (i<1) breite-=50; else if (i==1)breite=getWidth()/2; else if (i>1)breite+=50; } // mittelste Reihe -10 PolygonWithEgdes.drawNeck(g,getWidth()/2,getHeight()/2-130,16,6,false); PolygonWithEgdes.drawNeck(g,getWidth()/2,getHeight()/2-130,14,6,true); // mittelste Reihe +10 PolygonWithEgdes.drawNeck(g,getWidth()/2,getHeight()/2+130,16,6,false); PolygonWithEgdes.drawNeck(g,getWidth()/2,getHeight()/2+130,14,6,true); g.setFont(new Font("Times New Roman Bold", Font.BOLD, 15)); g.setColor(Color.BLUE); g.drawString("Player 1 : BLUE", 14, 28); g.setColor(Color.orange); g.drawString("Player 2 : ORANGE", 14, 48); } public static void main(String[] args) { // JFrame f = new JFrame(); final JFrame f = new f(); f.setSize(700,500); //f.setBounds(150,30,700,500); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new my_hex_game()); f.setTitle("Hex Game - board game"); f.setResizable(false); f.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent e) { if (e.getX()<300&&e.getY()<200){ JLabel RoudePunkt; RoudePunkt = new JLabel(); RoudePunkt.setOpaque(true); RoudePunkt.setBackground(Color.BLACK); RoudePunkt.setBounds(60,60,100,100); f.add(RoudePunkt); //if (width-e.getX()<30&&e.getY()<20)load();} AboutDialog ad = new AboutDialog(); ad.setVisible(true);} } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } }); f.setVisible(true); } } class Kreeser { public static void krees1(Graphics d) { d.setColor(Color.RED); d.fillRect(20, 20, 600, 600); } public static void krees2(Graphics d) { } } class PolygonWithEgdes { private static Polygon p = new Polygon(); public static synchronized void drawNeck(Graphics g,int x,int y,int r,int n,boolean filled) { p.reset(); for (int i=0;i<n;i++) p.addPoint((int) (x + r * Math.cos( i * 2 * Math.PI / n )), (int) (y + r * Math.sin( i * 2 * Math.PI / n ))); if (filled) { g.setColor(Color.white); g.fillPolygon(p); } else { g.setColor(Color.black); g.drawPolygon(p); } } }
Ich waer sehr sehr froh, wenn es Verbesserungsvorschläge und Lösungen gäbe :)
Mit freundlichen G.
Grumy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was genau ist dein Problem? *confused*
Soll jemand deinen Code beurteilen? Soll jemand dein Spiel fertig schreiben? Was klappt nicht so ganz? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage