2013-11-04 2 views
-1

학교 컴퓨터 프로젝트의 경우 Java로 팩맨 스타일 게임을 만들기로 결정했습니다. 우리 중 누구도 많은 경험이 없기 때문에 본질적으로 지금까지 스스로를 가르쳐 왔습니다. 우리는 꽤 많은 진전을 보였지만이 시점에서 우리는 정체 상태에 이른 것으로 보입니다.Java Game Programming 2 부 : 사라지는 이미지

Fatman이 사탕을 다룰 때 사탕을 어떻게 사라지게 할 수 있습니까? 재 페인트를 사용해 보았지만 제대로 작동하지 않는 것 같습니다.

(내가에 도움이 필요한 다른 일을 가지고 있지만 서로 다른 질문에)

여러분의 도움에 감사드립니다! 여기

지금까지 우리의 코드입니다

미로 등급 :

package Fatman; 

import javax.swing.*; 

public class Maze { 
    public static void main(String[] args){ 
     new Maze(); 
    } 

    public Maze(){ 
     JFrame f = new JFrame(); 
     f.setTitle("Fatman!"); 
     f.add(new Board()); 
     f.setSize(816, 838); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 

지도 클래스

package Fatman; 

import java.awt.*; 
import java.io.*; 
import java.util.*; 
import javax.swing.*; 

public class Map { 

    private Scanner m; 
    private String Map[] = new String[25]; 

    private Image spaceregcandy, 
        srcb, 
        safehouse, 
        spacebigcandy, 
        blackspace, 
        space, 
        portal1, 
        portal2, 
        wall; 

    public Map(){ 

     ImageIcon img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\spaceregcandy.png"); 
     spaceregcandy = img.getImage(); 
     //image icon has already been initiated, so it doesn't have to be written again 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\spaceregcandyblue.png"); 
     srcb = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\safehouse.png"); 
     safehouse = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\wall232x.png"); 
     wall = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\spacebigcandy.png"); 
     spacebigcandy = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\blackspace.png"); 
     blackspace = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\space.png"); 
     space = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\portal1.png"); 
     portal1 = img.getImage(); 
     img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\portal2.png"); 
     portal2 = img.getImage(); 

     openFile(); 
     readFile(); 
     closeFile(); 
     } 

    public Image getSpaceregcandy(){ 
     return spaceregcandy; 
    } 
    public Image getSrcb(){ 
     return srcb; 
    } 
    public Image getSafehouse(){ 
     return safehouse; 
    } 
    public Image getWall(){ 
     return wall; 
    } 
    public Image getSpacebigcandy(){ 
     return spacebigcandy; 
    } 
    public Image getBlackspace(){ 
     return blackspace; 
    } 
    public Image getSpace(){ 
     return space; 
    } 
    public Image getPortal1(){ 
     return portal1; 
    } 
    public Image getPortal2(){ 
     return portal2; 
    } 

    public String getMap(int x, int y){ 
     String index = Map[y].substring(x, x + 1); 
     return index; 
     //in y position, if y = 2, goes to second row (substring gets x position) 
    } 

    public void openFile(){ 

     try{ 
     m = new Scanner(new File("C:\\Users\\Martin\\Desktop\\Fatman Project\\map3.txt")); 
     }catch(Exception e){ 
      System.out.println("error loading map"); 
     } 
    } 

    public void readFile(){ 
     while(m.hasNext()){ 
      for(int i = 0; i < 25; i++){ 
       Map[i] = m.next(); 
      } 
     } 

    } 

    public void closeFile(){ 
     m.close(); 
    } 
} 

보드

클래스
package Fatman; 

import java.awt.*; 
import java.awt.event.*; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 

import javax.swing.*; 

public class Board extends JPanel implements ActionListener{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    private Timer timer; 

    private Image player; 

    private Map m; 
    private Player p; 

    public Board(){ 

     m = new Map(); 
     p = new Player(); 
     addKeyListener(new Al()); 
     setFocusable(true); 
     timer = new Timer(1, this); 
     timer.start(); 
    } 

    public void actionPerformed(ActionEvent e){ 
     repaint(); 

    } 

    public void paint(Graphics g){ 
     super.paint(g); 

     for(int y = 0; y < 25; y++){ 
      for(int x = 0; x <25; x++){ 
       if(m.getMap(x, y).equals("o")){ 
        g.drawImage(m.getSpaceregcandy(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("O")){ 
        g.drawImage(m.getSrcb(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("x")){ 
        g.drawImage(m.getWall(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("H")){ 
        g.drawImage(m.getSafehouse(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("C")){ 
        g.drawImage(m.getSpacebigcandy(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("b")){ 
        g.drawImage(m.getBlackspace(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("s")){ 
        g.drawImage(m.getSpace(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("p")){ 
        g.drawImage(m.getPortal1(), x *32, y *32, null); 
       } 
       if(m.getMap(x, y).equals("P")){ 
        g.drawImage(m.getPortal2(), x *32, y *32, null); 
       } 
     } 


    } 


     g.drawImage(p.getPlayer(), p.getTileX() * 32, p.getTileY() * 32, null); 

} 

    public class Al extends KeyAdapter{ 

     public void keyPressed(KeyEvent e){ 
      int keycode = e.getKeyCode(); 

      if(keycode == KeyEvent.VK_UP){ 
       if(!m.getMap(p.getTileX(), p.getTileY() -1).equals("x")){ 
        if(!m.getMap(p.getTileX(), p.getTileY() -1).equals("b")){      
         } 
         p.move(0, -1);     

         System.out.println(m.getMap(p.getTileX(), p.getTileY())); 

      } 
       } 

      if(keycode == KeyEvent.VK_DOWN){ 
       if(!m.getMap(p.getTileX(), p.getTileY() +1).equals("x")){ 
        if(!m.getMap(p.getTileX(), p.getTileY() +1).equals("b")){ 
         p.move(0, 1); 
         System.out.println(m.getMap(p.getTileX(), p.getTileY())); 
      } 
       } 
      } 
      if(keycode == KeyEvent.VK_LEFT){ 
       if(!m.getMap(p.getTileX() - 1, p.getTileY()).equals("x")){ 
        if(!m.getMap(p.getTileX() - 1, p.getTileY()).equals("b")){ 
         p.move(-1, 0); 
         System.out.println(m.getMap(p.getTileX(), p.getTileY())); 
      } 
       } 
      } 
      if(keycode == KeyEvent.VK_RIGHT){ 
       if(!m.getMap(p.getTileX() + 1, p.getTileY()).equals("x")){ 
        if(!m.getMap(p.getTileX() + 1, p.getTileY()).equals("b")){ 
         p.move(1, 0); 
         System.out.println(m.getMap(p.getTileX(), p.getTileY())); 
      } 
      } 
      } 
      } 


     public void keyReleased(KeyEvent e){ 

     } 

     public void keyTyped(KeyEvent e){ 

} 
} 
} 

플레이어 클래스

package Fatman; 

import java.awt.Image; 

import javax.swing.ImageIcon; 

public class Player { 

    private int tileX, tileY; 
    private int dx, dy; 

    private Image player; 

    public Player(){ 

     ImageIcon img = new ImageIcon("C:\\Users\\Martin\\Desktop\\Fatman Project\\FATMANsimplified32xbrown.png"); 
     player = img.getImage(); 

     tileX = 12; 
     tileY = 18; 
    } 

    public Image getPlayer(){ 
     return player; 
    } 
    public int getTileX(){ 
     return tileX; 
    } 
    public int getTileY(){ 
     return tileY; 
    } 

    public void move(int dx, int dy){ 

     tileX += dx; 
     tileY += dy; 
    } 

} 

어떤 아이디어?

답변

0

당신이 회원 중 한 명을 먹지 않는 한 당신이 3 인 그룹의 2/3 일 수는 없다고 생각합니다.하지만 ......... 귀하의 질문은 https://gamedev.stackexchange.com/에 더 적합합니다. 내 생각에 게임 개발 질문. 당신이 할 수 However.what

는, 오프 스크린 사탕의 위치를 ​​설정한다 (예 : candy.x = -100)

하지만, 어디 게임 루프라고 말하는에?

공공 무효 startGame() {

} 공공 무효 stopGame() {

} 파라미터 :() {// 힘 그래픽과 사용자 입력 업데이트 할 게임 상태}

또한 www.java-gaming.org에가 보는 것이 좋습니다. 유용한 튜토리얼이 있습니다.

0

아무 것도 점을 먹지 않고 Player.move()에 있습니다. 표현할 내용을 추적하려면 변수 Map.Map[]의 값을 업데이트해야합니다. 그렇지 않으면이 코드는 프로그래머가 한 번에 하나의 명령을 해킹하지만 프로그래밍 언어의 힘을 사용하여 컴퓨터가 충족시키는 조건에 따라 컴퓨터를 작동하게하는 빈 단어/기호 일뿐입니다.