I metodi "vuoti" nel mio codice non sono vuoti, qui li ho scritti così perchè non volevo scrivere una cosa troppo lunga che poi non si capisce niente... keyPressed e keyReleased cambiano dei valori che nel void movePlayer() vengono usati per far muovere il giocatore...
Comunque ora posto tutto il codice:
Questa è la classe principale (Main.java):
codice:import java.awt.CardLayout; import javax.swing.JFrame; import javax.swing.JPanel; public class Main { public static int WIDTH = 1920, HEIGHT = WIDTH / 16 * 9; public static boolean playing = false; public static void main(String[] args) throws InterruptedException{ Menu menu = new Menu(); Game game = new Game(); CardLayout cl = new CardLayout(); JPanel panel = new JPanel(); panel.add(menu, "1"); panel.add(game, "2"); panel.setLayout(cl); JFrame f = new JFrame("Game Walking"); f.setSize(WIDTH, HEIGHT); f.add(panel); f.setResizable(false); f.setLocationRelativeTo(null); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); while(true){ if(!playing){ cl.show(panel, "1"); menu.update(); menu.repaint(); }else{ cl.show(panel, "2"); game.update(); game.repaint(); } Thread.sleep(10); } } }
Questa è la classe del menu (Menu.java):
Questa è la classe del gioco vero e proprio (Game.java):codice:import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MouseInfo; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.ImageIcon; import javax.swing.JPanel; public class Menu extends JPanel implements MouseListener, MouseMotionListener{ public String imenupath = "/images/menu.png"; public String imenuselectionpath = "/images/menuselection.png"; public int mousex, mousey; public boolean isPlaySelected = false, isExitSelected = false; public void paint(Graphics g){ super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.drawImage(getMenuImage(), 0, 0, Main.WIDTH, Main.HEIGHT, null); g2d.setColor(Color.red); if(isPlaySelected){ g2d.drawImage(getMenuSelectionImage(), (Main.WIDTH*165)/1000, (Main.HEIGHT*148)/562, (Main.WIDTH*75)/1000, (Main.HEIGHT*50)/562, null); } if(isExitSelected){ g2d.drawImage(getMenuSelectionImage(), (Main.WIDTH*545)/1000, (Main.HEIGHT*348)/562, (Main.WIDTH*75)/1000, (Main.HEIGHT*50)/562, null); } //g2d.drawRect((Main.WIDTH*149)/1000, (Main.HEIGHT*99)/562, (Main.WIDTH*302)/1000, (Main.HEIGHT*135)/562); //g2d.drawRect((Main.WIDTH*530)/1000, (Main.HEIGHT*298)/562, (Main.WIDTH*302)/1000, (Main.HEIGHT*137)/562); } public Image getMenuImage(){ ImageIcon imenu = new ImageIcon(getClass().getResource(imenupath)); return imenu.getImage(); } public Image getMenuSelectionImage(){ ImageIcon imenuselection = new ImageIcon(getClass().getResource(imenuselectionpath)); return imenuselection.getImage(); } public void cursorInButton(){ Rectangle rplay = new Rectangle((Main.WIDTH*149)/1000, (Main.HEIGHT*99)/562, (Main.WIDTH*302)/1000, (Main.HEIGHT*135)/562); Rectangle rexit = new Rectangle((Main.WIDTH*530)/1000, (Main.HEIGHT*298)/562, (Main.WIDTH*302)/1000, (Main.HEIGHT*137)/562); if(rplay.contains(mousex, mousey)){ isPlaySelected = true; }else{ isPlaySelected = false; } if(rexit.contains(mousex, mousey)){ isExitSelected = true; }else{ isExitSelected = false; } } public void update(){ addMouseMotionListener(this); setFocusable(true); addMouseListener(this); setFocusable(true); cursorInButton(); } @Override public void mouseClicked(MouseEvent e) { if(e.getButton() == 1 && isPlaySelected){ Main.playing = true; } if(e.getButton() == 1 && isExitSelected){ System.exit(0); } } @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseDragged(MouseEvent e) {} @Override public void mouseMoved(MouseEvent e) { mousex = e.getX(); mousey = e.getY(); } }
codice:import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.ImageIcon; import javax.swing.JPanel; public class Game extends JPanel implements KeyListener { private String ibackgroundpath = "/images/background.png"; private String ibackground1path = "/images/background1.png"; private String iplayerpath = "/images/player.png"; private int bgx = 0, bgy = 0, bg1x = 0, bg1y = bgy - Main.HEIGHT; private int playerx = 360, playery = 400, velX = 0, velY = 0; public boolean up = false, down = false, left = false, right = false; public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.drawImage(getBackgroundImage(), bgx, bgy, Main.WIDTH, Main.HEIGHT, null); g2d.drawImage(getBackground1Image(), bg1x, bg1y, Main.WIDTH, Main.HEIGHT, null); g2d.drawImage(getPlayerImage(), (Main.WIDTH * playerx) / 1000, (Main.HEIGHT * playery) / 562, (Main.WIDTH * 75) / 1920, (Main.HEIGHT * 150) / 1080, null); } public Image getBackgroundImage() { ImageIcon ibackground = new ImageIcon(getClass().getResource( ibackgroundpath)); return ibackground.getImage(); } public Image getBackground1Image() { ImageIcon ibackground1 = new ImageIcon(getClass().getResource( ibackground1path)); return ibackground1.getImage(); } public Image getPlayerImage() { ImageIcon iplayer = new ImageIcon(getClass().getResource(iplayerpath)); return iplayer.getImage(); } public void moveBackground() { bgy += 2; bg1y += 2; if (bgy >= Main.HEIGHT) { bgy = bg1y - Main.HEIGHT; } if (bg1y >= Main.HEIGHT) { bg1y = bgy - Main.HEIGHT; } } public void movePlayer(){ if(up){ velY = -2; } if(down){ velY = 2; } if(right){ velX = 2; } if(left){ velX = -2; } } @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_W) { up = true; } if (key == KeyEvent.VK_S) { down = true; } if (key == KeyEvent.VK_A) { left = true; } if (key == KeyEvent.VK_D) { right = true; } } @Override public void keyReleased(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_W) { up = false; } if (key == KeyEvent.VK_S) { down = false; } if (key == KeyEvent.VK_A) { left = false; } if (key == KeyEvent.VK_D) { right = false; } } @Override public void keyTyped(KeyEvent e) {} public void update() { addKeyListener(this); setFocusable(true); moveBackground(); movePlayer(); playerx += velX; playery += velY; } }

Rispondi quotando