Java期末作业——王者荣耀的洛克王国版游戏

举报
肥学 发表于 2022/03/27 13:00:25 2022/03/27
【摘要】 适合Java新手的项目

image.png

👺导读

最近肥学在刷Java毕竟学业将至不得不为后面的道路考虑啊,做后端的不了解Java基础和学几个主流框架怎么也说不过去吧。然后我就试着写了我这个Java新手都能完成的王者荣耀洛克王国版模拟游戏暂时还没加上前端,等后面刷完框架在加。好了我们屁话不多说来看看吧

👺项目介绍

该项目使用MVC+DAO模式,这也是目前比较流行的模式吧。
MVC的意思是

字母 表示含义
M model,模型层,Javabean
V view 视图层 ,servlet和jsp前端页面
C controller 控制层

DAO 就是数据持久化层。
整个项目没有什么特点,它唯一的特点就是简单代码量较大附含视频特别适合新手练而且内容也涵盖了放射,正则表达式等一些技术。
在这里插入图片描述
每一个包里面又有很多的Java
在这里插入图片描述

👺功能介绍

特别强调介绍里面出现的人名绝无恶意,只是我个人在创作期间在《觉醒年代》中被他们深深吸引导致。

王者荣耀洛克王国版模拟游戏
1、系统需求:
用户方:
1、登录 输入用户名 密码 进行登录 
2、选择英雄进行游戏
包括: 英雄的类型、英雄的攻击值、攻击命中率
目前类型为:妲己和貂蝉
3、游戏开始后,英雄发起攻击,根据英雄的攻击值和命中率,计算分数
4、游戏结束后可将分数记录下来
5、可以查看以前的游戏分数 
管理员方:
1、登录 默认 用户名:admin 密码:123 ,后期从XML文件中读出
用户名密码输入三次错误,则退出游戏
2、新增玩家
3、修改玩家
4、删除玩家
5、查询玩家
6、查询游戏
7、分数统计
8、参数设置 
2、系统界面:

1、首页

~~~~~~~~~~~~~~~菜单界面~~~~~~~~~~~~~~~~~~

	   王者荣耀的洛克王国版

1.玩家登陆

2.管理员登录

3.退出

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请输入您想选择模式前的数值:

2、选择“1、玩家登录”
******************************************************

玩 家 登 录

请输入用户名:
请输入密码:

******************************************************
如果用户名和密码输入正确(需要管理员添加玩家)
则出现界面如下:

恭喜登陆成功!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	  王者荣耀洛克王国版

1·开始游戏
2·查看成绩
0·返回上级
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请选择:


2.1开始游戏
	您以选择成功!
	开始游戏!
	欢迎来到王者荣耀洛克王国版虚拟画面
	妲己:主法术攻击技能有三
	技能一:月刃   攻击值100
	技能二:魅惑   攻击值150
	技能三:狐之殇  攻击值300
	请输入您要使用的技能:
	1
	技能:月刃
	描述:对敌方造成法术伤害
	
	太棒了教对面做人!


	
	妲己:主法术攻击技能有三
	技能一:月刃   攻击值100
	技能二:魅惑   攻击值150
	技能三:狐之殇  攻击值300
	请输入您要使用的技能:
	2
	
	哎呀,打偏了我的我的!
	
	
	妲己:主法术攻击技能有三
	技能一:月刃   攻击值100
	技能二:魅惑   攻击值150
	技能三:狐之殇  攻击值300
	请输入您要使用的技能:
	3
	技能:狐之殇
	描述:对地方造成法术伤害+加减速效果
	
	成功超神!
	
	攻击结束鲁迅您的得分:400
	是否继续?(是或否)2.2查看成绩
游戏时间				        分数
2021-08-07 00:00:00.0		600
2021-08-08 07:56:37.0		450
2021-08-08 16:38:03.0		400
1、返 回 上 级
	2.3返回上级

 返回首页

3、选择“2、管理员登录”
******************************************************

管 理 员 登 录

请输入用户名:
请输入密码:

******************************************************
如果用户名和密码输入正确(默认都为admin)
则出现界面如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1·新增玩家
2·修改玩家
3·删除玩家
4·查询玩家
5·查询游戏英雄
6·分数统计
7·参数设置
0·返回上级
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果密码输错三次则退出游戏。系统关闭
3.1 新增玩家
新增玩家:
请输入玩家的登录名:(必须要有字母,且在系统中唯一)
请输入玩家的密码:(必须要有字母和数字,且最少不能少于6位)
请输入玩家的昵称:
请输入玩家的性别:(只可输入男或女)
请输入玩家的年龄:(只可输入正整数,且最大不可大于99)


新增玩家成功!
1、继续新增玩家
0、返 回 上 级

3.2 修改玩家
请选择要修改的玩家:
1、xx1	2、xx2	3、xx3	4、XX4
选“1”修改xx1
选择要修改的属性:
1、玩家的密码:(必须要有字母和数字,且最少不能少于6位)
2、玩家的昵称:
3、玩家的性别:(只可输入男或女)
4、玩家的年龄:(只可输入正整数,且最大不可大于1000、返回上级

3.3 删除玩家
请选择要删除的玩家:
1、xx1	2、xx2	3、xx3	4、XX4
选“1”删除xx1
全部删除后不可再删除

0、返回上级

3.4 查询玩家
	1·查询全部玩家
	2·根据登陆名查找
	0·回退
	loginname	 nickname	 sex	 age	
	周树人	    鲁迅	       男	18
	阿秀	       领导人	    男	20
	李大钊	    守常	       男	19123a	肥学	男	23


0、返 回 上 级
********************************************************************
3.5 查询游戏英雄
*******************************************************************************
英雄名:妲己
一技能:月刃  攻击力:100  命中率:90
二技能:魅惑  攻击力:150  命中率:80
三技能:狐之殇  攻击力:300  命中率:60
英雄名:貂蝉
一技能:独舞  攻击力:90  命中率:90
二技能:谗诱  攻击力:150  命中率:80
三技能:拜月  攻击力:200  命中率:80
3.6分数统计
玩家	     总分	  战力指数
	周树人   1450      ¤¤¤¤¤

3.7参数设置
	1·管理员的登陆名
	2·管理员密码
	3·管理员的最大登录次数
	
	以下仅作英雄详情展示
	英雄ID:1  英雄名:妲己
	技能一 伤害值:100: 命中率:90
	技能二 伤害值:150: 命中率:80
	技能三 伤害值:300: 命中率:60~~~
	英雄ID:2  英雄名:貂蝉
	技能一 伤害值:90: 命中率:90
	技能二 伤害值:150: 命中率:80
	技能三 伤害值:200: 命中率:80~~~
4、选择“0、退出”
系统提示“游戏结束。。。。。。”系统关闭

👺所建立的数据表

在这里插入图片描述

部分代码展示

public class AdminManager {
	/**
	 * 登录
	 * @throws SQLException 
	 */
	//
	DBUtil db=new DBUtil();
	SysManager sm=new SysManager();
	PlayerDao pd=new PlayerDao();
	GameDao gd=new GameDao();
	public boolean AdminOperate() throws SQLException {
		boolean b=false;
		for(int i=0;i<DataInit.login.getLogintime();i++) {
			Login login=Menu.getLoginUI();
			b=this.checkoutLogin(login);
			if(b) {
				System.out.println("恭喜登录成功!!!\n\n");
				//循环这个管理员界面使不按0推出就不会返回上一层
				boolean feixue=true;
				while(feixue) {
				int c=Menu.getAdminUI();
				
				feixue=this.adminOperate2(c);
				
				}
			}
			else {
				System.out.println("请重新登陆!");
				if(DataInit.login.getLogintime()-i>0) {
					System.out.println("还可以输入"+(DataInit.login.getLogintime()-i)+"次");
				}
			}
		}
		return b;
	}
//游戏过程
	public void play() throws SQLException {
		System.out.println("欢迎来到王者荣耀洛克王国版虚拟画面");
		int score=0;
		//选择英雄
		hero h=heros;
		for(int i=0;i<3;i++){
		score=this.selectSkill(h)+score;
		System.out.println("\n");
		}
		System.out.println("攻击结束"+player.get("nickname")+"您的得分:"+score);
		//保存游戏记录
		Game game=new Game();
		game.setPid(Integer.parseInt(player.get("id")));
		game.setScore(score);
		gd.insertGame(game);
	}
	
	//技能展示
	public int selectSkill(hero h) {
		//生成随机数
		double ran=Math.random()*10;
		//展示每个英雄的技能
		h.display();
		System.out.println("请输入您要使用的技能:");
		int s=InputHelper.getInt();

		switch(s) {
		case 1:
			
			int pro1 =h.probability1/10;
			if(ran<=pro1) {
				h.skill1();
				System.out.println("\n太棒了教对面做人!");
				return h.skill1;
			}else {
				System.out.println("\n哎呀,打偏了!");
			}
			break;
		case 2:
			
			int pro2 =h.probability2/10;
			if(ran<=pro2) {
				h.skill2();
				System.out.println("\n666");
				return h.skill2;
			}
			else {
				System.out.println("\n哎呀,打偏了我的我的!");
			}
			break;
		case 3:
			int pro3 =h.probability3/10;
			if(ran<=pro3) {
				h.skill3();
				System.out.println("\n成功超神!");
				return h.skill3;
			}else {
				System.out.println("\n大哥你技术不行呀!");
			}
			break;
		default:
			System.out.println("请输入正确的技能!");
		
		}
		return 0;
	}
	
public class GameDao {
	DBUtil db=new DBUtil();
	//新增游戏即重新开始
	public int insertGame(Game game) throws SQLException {
		//now()自带函数获取档当前时间
		String sql="insert into wzry_game(pid,playtime,score) values(?,now(),?)";
		Object[] obj= {game.getPid(),game.getScore()};
		return db.upDate(sql, obj);
	}
	//玩家查询自己的游戏记录
	public List<Map<String,String>> queryGameByPid(int id) throws SQLException{
		String sql="select b.*,a.loginname from wzry_player a,wzry_game b where a.id=b.pid and pid=?";
		Object[] obj= {id};
		List<Map<String,String>> list=db.query(sql, obj);
		return list;
	}
	//查询
	public List<Map<String,String>> queryAllGame() throws SQLException{
		String sql="select b.*,a.loginname from wzry_player a,wzry_game b where a.id=b.pid";
		List<Map<String,String>>list=db.query(sql, null);
		
		return list;
		
	}
	//分数统计
	
	public List<Map<String,String>> queryGameScore() throws SQLException {
		String sql="select a.loginname as 玩家,sum(b.score) as 总分,case "
		            +" when sum(b.score)>=500 then '¤¤¤¤¤' "
				    +" when sum(b.score)>=400 and sum(b.score)<500 then '¤¤¤¤' else '¤¤¤' end 'lucky'"
		            +" from wzry_player as a inner join wzry_game as b on a.id=b.pid"
					+" group by a.loginname";
		
		return db.query(sql, null);
	}
	//查询所有英雄
	public List<Map<String,String>> queryAllHeros() throws SQLException{
		String sql="select * from heros";
		List<Map<String,String>> heros=db.query(sql, null);
		return heros;
	}
	

}

👺特别注意

另外如果大家想获取MySQL基础知识和资源的话可以到这里来看看:传送门源码后续会传出来的。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。