Java开发的第一个游戏

Writted by Bruth_Lee in Southwest University of Science And Technology.

这个游戏主要是练习使用框架。


Game类:

package castle;

import java.util.HashMap;
import java.util.Scanner;

public class Game {
    private Room currentRoom;
    private HashMap<String, Handler> handlers = new HashMap<String, Handler>();   
    public Game() 
    {
    	handlers.put("bye", new HandlerBye(this));
    	handlers.put("help", new HandlerHelp(this));
    	handlers.put("去", new HandlerGo(this));
    	handlers.put("list",new Handlerlist(this));
        createRooms();
    }
	private void createRooms()
    {
        Room outside, lake, pub, study, bedroom;
      
        //	制造房间
        outside = new Room("107广场");
        lake = new Room("中心湖");
        pub = new Room("老区图书馆");
        study = new Room("新区图书馆");
        bedroom = new Room("科技之光");
       Room eatery2 = new Room("二食堂");
       Room eatery3 = new Room("三食堂");
       Room eatery4 = new Room("四食堂");
       Room eatery5 = new Room("五食堂");
       Room eatery6 = new Room("六食堂");
       Room eatery7 = new Room("七食堂");
       Room eatery1 = new Room("一食堂");
        
        //	初始化房间的出口
        outside.setExit("中心湖", lake);
        outside.setExit("新区图书馆", study);
        outside.setExit("老区图书馆",pub);
        outside.setExit("科技之光",bedroom);
        outside.setExit("一食堂",eatery1);
        lake.setExit("107广场", outside);
        lake.setExit("科技之光",bedroom );
        lake.setExit("新区图书馆", study);
        lake.setExit("五食堂", eatery5);
        pub.setExit("107广场", outside);
        pub.setExit("一食堂", eatery1);
        study.setExit("107广场",outside);
        study.setExit("科技之光", bedroom);
        bedroom.setExit("新区图书馆", study);
        currentRoom = outside;  //	从城堡门外开始
    }

    private void printWelcome() {
        System.out.println("Written by Bruth_Lee in Southwest University of Science And Technology.");
        System.out.println("欢迎来到西南科技大学幻想城!");
        System.out.println("让我们回到古老的网页游戏时代");
        System.out.println("如果需要帮助,请输入 'help' 。");
        System.out.println();
        ShowPromt();
    }
    protected void goRoom(String direction) 
    {
        Room nextRoom = currentRoom.getExit(direction);//获得出口处的房间
      
        if (nextRoom == null) {
            System.out.println("那里没有门!");
        }
        else {
            currentRoom = nextRoom;
            ShowPromt();
        }
    }
    public void ShowPromt() {
    	  System.out.println("你现在在" + currentRoom);
          System.out.print("你可以直接前往: ");
    	  System.out.println(currentRoom.getExits());//获得出口
          System.out.println();
    }
	public void play() {//创建人物并显示基本信息
		Scanner in = new Scanner(System.in);
		String name=in.nextLine();
		Charactor charactor= new Charactor(name);
		charactor.show();
        while ( true ) {
    		String line = in.nextLine();
    		String[] words = line.split(" ");
    		Handler handler =  handlers.get(words[0]);
    		String value = "";
    		if(words.length>1) {
    			value = words[1];
    			charactor.uplevel();
    		}
    		if(handler!=null) {
    			handler.doCmd(value);
    			if(handler.isBye()) 	break;
    		}else {
    			System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    			System.out.println("恭喜你成功加入:"+line+", 赶紧上车,小司机开车之横冲直撞,滴滴滴、、、、、");
    			System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    		}
    		 charactor.show();
        }
           }
	public static void main(String[] args) {
		Game game = new Game();
		game.printWelcome();
		System.out.println("请输入您的游戏昵称:");
		System.out.println("注意:一次输入,无法修改哦!!!");
		game.play();
		System.out.println("感谢您的光临。再见!");   
 }
}

Charactor:
package castle;

public class Charactor extends Game {
    private String name;
    private String skill = "力劈华山,巫蛊极毒,要火燎原";
	private int blood_volume=100;
	private int aggressivity=50;
	private int defenses=50;
	private int level=1;
	private int experience=100;
	final int exp=100;
	public void uplevel() {
		this.experience -= (int)Math.sqrt(this.experience)*6+5;
		if(this.experience<=0) {
			this.level++;
			this.aggressivity+=level*2;
			this.defenses+=level;
			System.out.println("***********************");
			System.out.println("恭喜你升至"+this.level+"级->->->\t攻击力增加至:"+this.aggressivity+"->->->####防御力增加至:"+this.defenses);
			this.experience = exp*2+8;
		}
	}
	public Charactor(String name) {
		super();
		this.name = name;
	}
	public void show() {
		System.out.print("玩家:");
		System.out.print(name);
		System.out.print("\t\t");
		System.out.print("等级:");
		System.out.print(level);
		System.out.print("\t\t");
		System.out.print("升级所需要的Exp: ");
		System.out.println(experience);
		System.out.print("攻击力:");
		System.out.print(aggressivity);
		System.out.print("\t\t");
		System.out.print("防御力:");
		System.out.print(defenses);
		System.out.print("\t\t");
		System.out.print("技能:");
		System.out.println(skill);
	}
}
Handler:
package castle;

public class Handler {
	protected Game game;
	public Handler(Game game) {
		this.game = game;
	}
	public void doCmd(String word) {
		
	}
	public boolean islist() {
		return false;
	}
	public boolean isBye(){
		return false;
	}
}

HandlerBye
package castle;

public class HandlerBye extends Handler {

	public HandlerBye(Game game) {
		super(game);
		// TODO Auto-generated constructor stub
	}

	@Override
	public boolean isBye() {
		// TODO Auto-generated method stub
		return true;
	}
	
}

HandlerGo
package castle;

public class HandlerGo extends Handler {

	public HandlerGo(Game game) {
		super(game);
		
	}

	@Override
	public void doCmd(String word) {
		// TODO Auto-generated method stub
		game.goRoom(word);
	}
	
}

HandlerHelp
package castle;

public class HandlerHelp extends Handler {

	public HandlerHelp(Game game) {
		super(game);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void doCmd(String word) {
		 System.out.println("迷路了吗?你可以做的命令有:去  ~");
	     System.out.println("如:\t去 科技之光");
	     System.out.println("如果想要结束游戏,请输入bye");
	     System.out.println("如果你想加入教派,^*^可以输入list,查看教派信息!");
//		super.doCmd(word);
	}
	
}

Handlerlist:
package castle;

public class Handlerlist extends Handler {

	public Handlerlist(Game game) {
		super(game);
		// TODO Auto-generated constructor stub
		
	}
	@Override
	public void doCmd(String word) {
		Sect_print();
	}
	public void Sect_print() {
	System.out.println("教派名称\t\t教主\t\t入教等级\t个性宣言");
	System.out.println("老王派\t\t社会王\t\t  1\t请千万当心隔壁那个老王!!!");
	System.out.println("骑士教\t\t唐纳德\t\t  1\t天下唯我教独尊~!");
	System.out.println("圣女派\t\t沃伦·巴菲特\t\t  1\t是剩女也是圣女…………");
	System.out.println("丐帮\t\t比尔·盖茨\t\t  1\t首富不是我的追求,就像马云所说:我对钱没有兴趣!");
	System.out.println("罗斯切尔德家族" + 
			"\t查尔斯·科赫\t\t  \t本家族的总资产就那么几百(亿美元)。。。。。");
	
}
	@Override
	public boolean islist() {
		// TODO Auto-generated method stub
		return true;
	}
}

Room:
package castle;

import java.util.HashMap;

public class Room {
    private String description;
    private Room northExit;
    private Room southExit;
    private Room eastExit;
    private Room westExit;
    HashMap<String, Room> exit = new HashMap<String,Room>();
    public void  setExit(String direction, Room room) {//初始化
    	exit.put(direction, room);
    }
    public Room(String description) 
    {
        this.description = description;
    }
    public Room getExit(String direction) {
    	return exit.get(direction);
    }
    public String getExits() {
    	StringBuffer sb = new StringBuffer();
    	for(String str : exit.keySet()) {
    		sb.append(str);
    		sb.append('、');
    	}
    	sb.deleteCharAt(sb.length()-1);
//       	 sb.append("south ");
    	return sb.toString();
    }
 
    @Override
    public String toString()
    {
        return description;
    }
}
	

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖无为

感谢你们的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值