项目二:实现简单的金山打字通
1、需求概述
根据输入速率和正确率将玩家分为不同级别
级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高
规定时间内完成规定次数的输入,正确率达到规定要求,则升级
l玩家最高级别为6级、初始级别一律为1级用户错误输入一次,游戏结束
2根据需求,可以分为玩家(Player)类,游戏类(Game);级别(Level)类
3类的属性
玩家类(Player)的属性
玩家当前的级别号(levelNo)
玩家当前级别的分数(Score)
玩家级别开始时间(startTime)
玩家已使用时间(usedTime)
玩家总用时常(totalTime)
级别类(Level)的属性
级别号(levelNo)
每次输入字符串的长度(strLength)
输入字符串的次数(typeCnt)
闯关的时间限制 (lvlTime)
每次打字的积分(perScore)
4、实现程序的运行
玩家类(Player)
public class Player{String name;int lvlNo=1;long startTime=System.currentTimeMillis();long usedTime;long totalUsedTime;int scores=0;public void play(){Game g=new Game();g.run(p.this);
}
}
级别类(Level)
public class Level{int lvlNo;int typeCnt;int strLength;int lvlTime;int perScore;public Level(int lvlNo,int typeCnt,int strLength,int lvlTime,int perScore){this.lvlNo=lvlNo;this.typeCnt=typeCnt;this.strLength=strLength;this.lvlTime=lvlTime;this.perScore=perScore;
}
}
游戏类(Games)
public class Game implements Printer {private Scanner input = new Scanner(System.in);public final Level[] LEVELS = {new Level(1, 1, 2, 20,1),new Level(2, 1, 3, 30, 2),new Level(3, 2, 4, 40, 3),new Level(4, 3, 5, 50, 4),new Level(5, 3, 5, 60, 5),new Level(6, 3, 6, 70, 6)};public String print(int levelNo){ //生成级别字符串int length =LEVELS[levelNo-1].strLength;String rst="";char[] c =new char[length];for(int i=0;i<c.length;i++)//每次都是全小写字母(97-122)和全大写字母(65-90)int chose = (int) (Math.random() * 2);c[i]=(char)(Math.random()*26+(chose==0?65:97));}rst = new String(c);return rst;}//每一轮的比较方法public void round(Player p) {Level level = LEVELS[p.lvlNo - 1];System.out.println(p.name + ",当前级别:" + level.lvlNo + ",要输入" + level.typeCnt+ "次,每次长度时:" + level.strLength + ",时常限时" + level.lvlTime+ "秒,当前积分为:" + p.scores);for (int i = 0; i < level.typeCnt; i++) {String s=print(p.lvlNo);System.out.println("请输入:" + s);String in = input.next();long now = System.currentTimeMillis();if (!s.equals(in)) {throw new GameErrException("输入错误,退出游戏");}long used = (now - p.startTime) / 1000;p.usedTime = used;if (used > level.lvlTime) {throw new GameErrException("输入超时,退出游戏!");}p.scores += level.perScore;}long left = level.lvlTime - p.usedTime;p.scores += left * level.perScore;p.totalUsedTime+=p.usedTime;System.out.println("恭喜升级,当前等级已用时常"+p.usedTime);System.out.println("获得额外的附加分:"+left*level.perScore);
}// public static void main(String[] args) {
// Player p=new Player();
// p.name="";
// Game g=new Game();
// g.round(p);
// }public void run(Player p) {if (p == null) {p = new Player();System.out.print("欢迎新用户");}if (p.name == null) {p = new Player();System.out.print("请输入您的姓名:");p.name = input.next();}System.out.println("尊敬的"+p.name+"游戏已经开始了,请准备!");do {//控制升级过程round(p);p.lvlNo++;}while (p.lvlNo<=LEVELS.length);// lvlNo<=6System.out.println("恭喜"+p.name+"选手通关!您的总积分为:"+p.scores+",总时常"+p.totalUsedTime);}// public static void main(String[] args) {
// Game g=new Game();
// Player p=null;
// g.run(p);
// }}
5、游戏类应用一个打印方法,可以用接口来实现
public interface Printer {String print(int a);
}
6、测试类遇到问题需要抛出,所有建一个抛出异常类
public class GameErrException extends RuntimeException {public GameErrException(String message) {super(message);}
}
7、测试类
public class GameZone {public static void main(String[] args) {Player p=new Player();p.name="大力水手";try {Game g = new Game();p.play();}catch (GameErrException e){System.out.println(e.getMessage());}finally {System.out.println(p.name+"您最终的积分为:"+p.scores);}} }
8、运行结果
项目二:实现简单的金山打字通相关推荐
- 解决金山打字通不能缩小窗口问题
前段时间,在学五笔, 用的是金山打字通, 但是金山打字通只能全屏显示,这个本没有什么的, 但是我又想在练习的同时看电影,所以这样缩小窗口就显得很重要了 在网上搜索了一下发现金山打字通本身就不能全屏. ...
- Dev-C++游戏创作之金山打字通(附带音乐)
Hi!大家好!我是你们的编程小王子 最近一直拖着没更新,因为实在是没什么游戏思路.但是终于搞出来一个 金山打字通相信很多小伙伴们都认识,所以东西我就不多介绍,今天主要讲解音乐的播放(超级简单的)! / ...
- 金山打字通2011+免升级
1,金山打字通2011下载地址:http://pan.baidu.com/s/1pKKLxrl ~everything和editplus在百度一搜就可以下载. 2,工具:everything + 金山 ...
- 普通域账户不能运行金山打字通的解决方案
普通域账户不能运行金山打字通 发现用本地管理员账户和域管理员账户能运行 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-c ...
- 官方金山打字通2009
官方金山打字通2009 软件类别:国产软件/教育教学 运行环境: Win98/2000/XP/2003/Vista 软件语言:简体中文 开发作者: 金山软件公司 官方网站:http://www.syy ...
- 金山打字通2008完整版包含金山打字游戏,网上唯一的
金山打字通2008 官方正式完整版,网上唯一的,其他都是不完整的.2007,2009版为虚假,官方未出此版. [概括介绍] 金山打字通是一款学习打字软件具有英文打字.拼音打字.五笔打字.打字游戏等功能 ...
- PlayOnLinux 安装 金山打字通2016
2019独角兽企业重金招聘Python工程师标准>>> 安装一个程序 安装未在列表中的程序 您想做什么? 选择新建虚拟盘安装程序,点击下一步. 请输入您应用程序的虚拟盘的名称 输入 ...
- 小白练打字:金山打字通
对于小白来说,首先肯定练打字,那么打字软件就很必要了,比如金山打字通 打开界面是这样 如果是完全小白,先用新手入门熟悉键盘 稍有基础则选英文打字进一步熟悉 最后当然练中文 除此之外还有打字 这就是打字 ...
- 金山打字通语句练习的文本
金山打字通语句练习的文本 the with more could seem leave follow fact war company nothing near love often car diff ...
最新文章
- springboot自动装配原理笔记一
- ACM寒假训练第一周总结
- 让 windows 的桌面 干净。。。再干净点。。。
- oracle经典增删该查,oracle基本语法(增删改查
- 工作132:页面布局
- linux apache jk,Linux下Apache+Tomcat+JK实现负载均衡和群集的完整过程
- 直接在安装了redis的Linux机器上操作redis数据存储类型--hash类型
- android-async-http取消请求
- OpenCV-Python实战(12)——一文详解AR增强现实
- 《Linux》美轮美奂的Arch, 详解Arch虚拟机安装
- mysql基础以优化
- 国脉信息学院计算机网络,福建工程学院国脉信息学院《计算机网络模拟题》
- C语言_4 循环结构;一些例题
- 1153: 简易版最长序列 C语言
- 制作7Z格式可安装程序包
- Java版俄罗斯方块
- 全美航班停飞原因曝光/ 米哈游辟谣年终奖108薪/ 苹果正开发触摸屏Mac…今日更多新鲜事在此...
- electron 主进程和渲染进程的通信
- Linux系统的atop监控工具
- 双色球的简单逻辑!不中五百万天理难容!