대상을 위한 프로그램 설계-성 게임
성 게임 프레임워크 + 데이터, 프로그램, 필기
옹케 선생님의 모과 과정, 자바 진급 과정 중의 성 게임, 원본 다운로드 가능: 성 게임 원본 다운로드 B 사이트 안내: 과정 후속에 원본 코드를 일련의 개조를 했습니다. 여기에 제 프로그램을 놓았습니다. 과정을 따라가지 못한 학생들은 참고할 수 있습니다. 프로그램 다운로드(추출: tvhd) 저는 캐슬의 가방을 놓았습니다.학생들이 직접 폴더를 새로 만들고 다운로드한 가방을 src에 넣어야 합니다.나는 프로그램에서 몇 가지 필기를 했으니, 비교적 이해하기 쉬울 것이다.
나도 신출내기라서 부족하면 함께 토론할 수 있기를 바란다
밑에 제 프로그램 올려주세요.
게임 클래스
package castle;
import java.util.HashMap;
import java.util.Scanner;
public class Game {
private Room current_room;
private HashMap<String, Handler> handlers = new HashMap<String,Handler>();
// ,game new , handlers
// this new game
public Game() {
setRoom();
// new value ,
// this.go\this.help, key ,bye ,
handlers.put("go", new HandlerGo(this));
handlers.put("help", new HandlerHelp(this));
handlers.put("bye", new HandlerBye(this));
}
//
public void setRoom() {
//
Room outside = new Room(" ");
Room lobby = new Room(" ");;
Room study = new Room(" ");
Room bedroom = new Room(" ");
Room pub = new Room(" ");
// ,
outside.setExit("east", lobby);
outside.setExit("south", study);
outside.setExit("west", pub);
lobby.setExit("west", outside);
study.setExit("north", outside);
study.setExit("east", bedroom);
bedroom.setExit("west", study);
pub.setExit("east", outside);
lobby.setExit("up", pub);
pub.setExit("down", lobby);
current_room=outside;
}
// : 、
public void print_info(Room current_room) {
System.out.println(" :"+current_room);
System.out.print(" :");
System.out.println(current_room.getExitDescription());
}
//
public void welcome() {
System.out.println(" !");
System.out.println(" help。");
print_info(current_room);
}
// , , , HandlerGo
public void goGame(String direction) {
Room next_room = current_room.nextRoomDetermine(direction);
// ,
if(next_room==null)
{
System.out.println(" !");
}
else
{
current_room=next_room;
print_info(current_room);
}
}
//
public void run() {
Scanner in=new Scanner(System.in);
while (true) {
String[] order = in.nextLine().split(" ");//
Handler handler = handlers.get(order[0]);// value handler,
String value="";
if(order.length>1)
{
value = order[1];
}
if(handler!=null)
{
// value : (help\bye)、 (go direction)
// doCmd help go , handler ( )
handler.doCmd(value);// order[1], ArrayIndexOutOfBoundsException
// bye isBye, HandlerBye
if(handler.isBye())// , false
{
break;
}
}
}
in.close();
}
public static void main(String[] args) {
Game game = new Game();
game.welcome();
game.run();
System.out.println(" 。 !");
}
}
Room 클래스
package castle;
import java.util.HashMap;
public class Room {
private String description;
//
private HashMap<String, Room> exits=new HashMap<String,Room>();//
// print
public Room(String description) {
this.description = description;
}
// , ---
public void setExit(String direction, Room room) {
exits.put(direction, room);
}
// map, , map ,
public String getExitDescription() {
StringBuffer sb = new StringBuffer();
for(String dir : exits.keySet())
{
sb.append(dir);
sb.append(" ");
}
return sb.toString();
}
// direction , ,
public Room nextRoomDetermine(String direction) {
return exits.get(direction);
}
@Override
public String toString() {
return description;
}
}
Handler 클래스
package castle;
public class Handler {
protected Game game;
public Handler(Game game) {
this.game = game;
}
public void doCmd(String direction) {
}
public boolean isBye() {
return false;
}
}
HandlerBye 클래스
package castle;
public class HandlerBye extends Handler{
public HandlerBye(Game game) {
super(game);
}
@Override
public boolean isBye() {
return true;
}
}
HandlerHelp 클래스
package castle;
public class HandlerHelp extends Handler {
public HandlerHelp(Game game) {
super(game);
}
@Override
public void doCmd(String direction) {
System.out.println(" :help,bye,go( go east)");
}
}
HandlerGo 클래스
package castle;
public class HandlerGo extends Handler {
public HandlerGo(Game game) {
super(game);
}
@Override
public void doCmd(String direction) {
game.goGame(direction);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.