ผลต่างระหว่างรุ่นของ "Oop lab/maze game"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 23: แถว 23:
  
 
== แสดงแผนที่ ==
 
== แสดงแผนที่ ==
 +
 +
=== หน้าจอเปล่า/คลาส MazeGame ===
 +
เช่นเคย เราจะเริ่มโดยสร้างโปรแกรมที่แสดงหน้าจอเปล่า
 +
 +
<syntaxhighlight lang="java">
 +
public class MazeGame extends BasicGame {
 +
 +
  public static final int GAME_WIDTH = 640;
 +
  public static final int GAME_HEIGHT = 480;
 +
 +
  public MazeGame(String title) {
 +
    super(title);
 +
  }
 +
 
 +
  @Override
 +
  public void init(GameContainer container) throws SlickException {
 +
  }
 +
 +
  @Override
 +
  public void render(GameContainer container, Graphics g) throws SlickException {
 +
  }
 +
 +
  @Override
 +
  public void update(GameContainer container, int delta) throws SlickException {
 +
  }
 +
 
 +
  public static void main(String[] args) {
 +
    try {
 +
      MazeGame game = new MazeGame("Maze Game");
 +
      AppGameContainer container = new AppGameContainer(game);
 +
      container.setDisplayMode(GAME_WIDTH, GAME_HEIGHT, false);
 +
      container.setMinimumLogicUpdateInterval(1000 / 60);
 +
      container.start();
 +
    } catch (SlickException e) {
 +
      e.printStackTrace();
 +
    }
 +
  }
 +
}
 +
</syntaxhighlight>
 +
 +
=== คลาส Maze ==
 +
 +
เราจะสร้างคลาส Maze ที่แสดงแผนที่  โดยในการแสดงแผนที่เราจะแสดงโดยใช้รูปเล็ก ๆ ขนาด 40 x 40 มาประกอบกันเพื่อแสดงเป็นแผนที่  ดังนั้นในขั้นแรกให้สร้างไฟล์ wall.png ที่เป็นรูปกำแพงขนาด 40 x 40 และเก็บไว้ในไดเร็กทอรี res
 +
 +
สำหรับเกมนี้ เพื่อความง่าย เราจะระบุขนาดของแผนที่ให้เหมาะสมกับหน้าจอของเกมของเรา
  
 
== ตัว Pacman และการเคลื่อนที่ ==
 
== ตัว Pacman และการเคลื่อนที่ ==

รุ่นแก้ไขเมื่อ 08:38, 4 ตุลาคม 2557

หน้านี้เป็นส่วนหนึ่งของ oop lab
เนื้อหาส่วนนี้ ถ้าต้องการดูเป็นภาษา JavaScript กรุณาดูที่ 01219245/cocos2d/Maze

ในส่วนนี้เราจะพิจารณาการเขียนเกมที่เป็นตารางและผู้เล่นเครื่องที่ไปมาในตาราง เกมที่เป็นตัวอย่างคลาสสิกของเกมตระกูลนี้คือ PacMan หน้าตาของเกมนี้แสดงดังด้านล่าง

Java-mazegame.png

ขั้นตอน

เราจะค่อย ๆ เขียนโปรแกรมไปทีละขั้น ๆ ดังนี้

  • แสดงแผนที่
  • แสดงตัวผู้เล่นและขยับตัวผู้เล่น แบ่งเป็นขั้นย่อย ๆ หลายขั้น
    • แสดงตัวผู้เล่น
    • ขยับตัวผู้เล่นตามการกดปุ่ม โดยไม่สนใจแผนที่
    • ขยับตัวผู้เล่นให้ตรงช่องแผนที่ แต่อาจวิ่งทะลุกำแพง
    • ขยับตัวผู้เล่นให้ตรงแผนที่และไม่วิ่งทะลุกำแพง
  • แสดงจุด และให้ผู้เล่นกินจุดได้

ในหลาย ๆ ขั้นตอนสามารถเขียนได้หลายแบบ โดยมีข้อดีและข้อเสียแตกต่างกันไป ดังนั้นในการเขียนจริง ผู้เขียนอาจจะเลือกเขียนไม่เหมือนในเอกสารนี้ก็ได้

โค้ดทั้งหมดอยู่ที่: https://github.com/jittat/slick2d-mazegame

แสดงแผนที่

หน้าจอเปล่า/คลาส MazeGame

เช่นเคย เราจะเริ่มโดยสร้างโปรแกรมที่แสดงหน้าจอเปล่า

public class MazeGame extends BasicGame {

  public static final int GAME_WIDTH = 640;
  public static final int GAME_HEIGHT = 480;

  public MazeGame(String title) {
    super(title);
  }
  
  @Override
  public void init(GameContainer container) throws SlickException {
  }

  @Override
  public void render(GameContainer container, Graphics g) throws SlickException {
  }

  @Override
  public void update(GameContainer container, int delta) throws SlickException {
  }
  
  public static void main(String[] args) {
    try { 
      MazeGame game = new MazeGame("Maze Game");
      AppGameContainer container = new AppGameContainer(game);
      container.setDisplayMode(GAME_WIDTH, GAME_HEIGHT, false);
      container.setMinimumLogicUpdateInterval(1000 / 60);
      container.start();
    } catch (SlickException e) {
      e.printStackTrace();
    }
  }
}

= คลาส Maze

เราจะสร้างคลาส Maze ที่แสดงแผนที่ โดยในการแสดงแผนที่เราจะแสดงโดยใช้รูปเล็ก ๆ ขนาด 40 x 40 มาประกอบกันเพื่อแสดงเป็นแผนที่ ดังนั้นในขั้นแรกให้สร้างไฟล์ wall.png ที่เป็นรูปกำแพงขนาด 40 x 40 และเก็บไว้ในไดเร็กทอรี res

สำหรับเกมนี้ เพื่อความง่าย เราจะระบุขนาดของแผนที่ให้เหมาะสมกับหน้าจอของเกมของเรา

ตัว Pacman และการเคลื่อนที่

จุดและการกิน

คะแนน