人员分工

周志豪:组长,写文档

崔世昂:原型系统的实现

田希宇:进行进阶的测试

张峻杰:管理博客,ppt展示

代码实现功能点及代码:

  1. 购买棋子

输入BC进入购买页面,输入1-5购买,0刷新,-1退出

case "BC":{

if(Bought==false) {

p1.BuyChess();

System.out.println("========已退出购买页面========");

Bought=true;

}

else System.out.println("你已经买过了!");

break;

}

  1. 购买经验

输入BE购买经验

                    case "BE":{

if(p1.Coins<5) {

System.out.println("你的钱不够!");

break;

}

else {

if(p1.Grade<=10) {

System.out.println("========金币-5,经验+4========");

p1.Coins-=5;

p1.Experience+=4;

if(p1.Experience>=p1.LevelUpExperienceOnGrade[p1.Grade]) {

p1.Experience-=p1.LevelUpExperienceOnGrade[p1.Grade];

p1.Grade++;

}

break;

}

else {

System.out.println("你已经满级了,不需要买经验了!");

break;

}

}

}

  1. 卖棋子

输入SC卖棋子

case "SC":{

p1.SellChess();

System.out.println("========已退出卖棋页面========");

break;

}

4.合成棋子

case "CC":{

p1.CombineChess();

System.out.println("========已退出合棋页面========");

break;

}

5.下个回合

输入NT进入下个回合

case "NT":{

System.out.println("========即将开始下一回合========");

Next=true;

break;

}

总共的代码量是475行

全部代码:

①Chess.java

package Game;

public class Chess {

public String Name=new String();

public String Quality=new String();

public int Cost;

public Chess(String name,String quality,int cost) {

this.Name=name;

this.Quality=quality;

this.Cost=cost;

}

}

②PlayerModel.java

package Interface;

public interface PlayerModel {

public void Init();

public void BuyChess();

public void CombineChess();

public void SellChess();

public void Update();

}

③Player.java

package Game;

import Interface.PlayerModel;

import java.util.*;

import java.io.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Player implements PlayerModel {

public int Round;

private int Grade;

private int Experience;

private int Coins;

private int ConstantWinning;

private int ConstantFailing;

private int interest=0;

private String Name;

public int[] ChessCostOnGrade= {0,1,2,3,3,4,4,4,5,5,5};

public int[] LevelUpExperienceOnGrade= {1,1,1,2,4,8,16,24,32,40};

private LinkedList<Chess> MyChess;

private LinkedList<Chess> Library;

public static void main(String[] args) {

// TODO Auto-generated method stub

String Order=new String();

Scanner in=new Scanner(System.in);

boolean Bought;

boolean Next;

Player p1=new Player();

p1.Init();

System.out.println("AutoChess 抽棋模拟");

System.out.println("=================");

System.out.println("游戏规则:");

System.out.println("输入不同的文本来进行操作:\n"

+ "BC 表示 BuyChess\n"

+ "BE 表示BuyExperience\n"

+ "SC 表示 SellChess\n"

+ "CC 表示 CombineChess\n"

+ "NT 表示 NextTurn");

while(true) {

p1.Update();

Bought=false;

Next=false;

while(Next==false) {

p1.Show();

switch(Order=in.next()) {

case "BC":{

if(Bought==false) {

p1.BuyChess();

System.out.println("========已退出购买页面========");

Bought=true;

}

else System.out.println("你已经买过了!");

break;

}

case "BE":{

if(p1.Coins<5) {

System.out.println("你的钱不够!");

break;

}

else {

if(p1.Grade<=10) {

System.out.println("========金币-5,经验+4========");

p1.Coins-=5;

p1.Experience+=4;

if(p1.Experience>=p1.LevelUpExperienceOnGrade[p1.Grade]) {

p1.Experience-=p1.LevelUpExperienceOnGrade[p1.Grade];

p1.Grade++;

}

break;

}

else {

System.out.println("你已经满级了,不需要买经验了!");

break;

}

}

}

case "SC":{

p1.SellChess();

System.out.println("========已退出卖棋页面========");

break;

}

case "CC":{

p1.CombineChess();

System.out.println("========已退出合棋页面========");

break;

}

case "NT":{

System.out.println("========即将开始下一回合========");

Next=true;

break;

}

default:{

System.out.println("你输错了,请输入正确的指令!");

break;

}

}

}

}

}

@Override

public void Init() {

// TODO Auto-generated method stub

this.Round=0;

this.Grade=0;

this.Experience=0;

this.Coins=100;

this.ConstantWinning=0;

this.ConstantFailing=0;

this.interest=0;

this.MyChess=new LinkedList<Chess>();

this.Library=new LinkedList<Chess>();

Scanner in=new Scanner(System.in);

System.out.println("=================");

System.out.println("请输入名称:");

this.Name=in.next();

for(int i=0;i<9;i++) {

this.Library.add(new Chess("潮汐猎人","传说",5));

this.Library.add(new Chess("迷团","传说",5));

this.Library.add(new Chess("地精工程师","传说",5));

this.Library.add(new Chess("巫妖","传说",5));

this.Library.add(new Chess("矮人直升机","传说",5));

this.Library.add(new Chess("利爪德鲁伊","史诗",4));

this.Library.add(new Chess("龙骑士","史诗",4));

this.Library.add(new Chess("蛇发女妖","史诗",4));

this.Library.add(new Chess("干扰者","史诗",4));

this.Library.add(new Chess("炼金术士","史诗",4));

this.Library.add(new Chess("圣堂刺客","史诗",4));

this.Library.add(new Chess("死灵法师","史诗",4));

this.Library.add(new Chess("光之守卫","史诗",4));

this.Library.add(new Chess("巨魔战将","史诗",4));

this.Library.add(new Chess("海军上将","史诗",4));

this.Library.add(new Chess("末日使者","史诗",4));

this.Library.add(new Chess("秀逗魔法师","稀有",3));

this.Library.add(new Chess("影魔","稀有",3));

this.Library.add(new Chess("冥界亚龙","稀有",3));

this.Library.add(new Chess("狙击手","稀有",3));

this.Library.add(new Chess("鱼人夜行者","稀有",3));

this.Library.add(new Chess("沙王","稀有",3));

this.Library.add(new Chess("死亡骑士","稀有",3));

this.Library.add(new Chess("幻影刺客","稀有",3));

this.Library.add(new Chess("风行者","稀有",3));

this.Library.add(new Chess("闪电幽魂","稀有",3));

this.Library.add(new Chess("全能骑士","稀有",3));

this.Library.add(new Chess("剧毒术士","稀有",3));

this.Library.add(new Chess("狼人","稀有",3));

this.Library.add(new Chess("先知","普通",2));

this.Library.add(new Chess("月之骑士","普通",2));

this.Library.add(new Chess("树精卫士","普通",2));

this.Library.add(new Chess("混沌骑士","普通",2));

this.Library.add(new Chess("鱼人守卫","普通",2));

this.Library.add(new Chess("巫医","普通",2));

this.Library.add(new Chess("精灵龙","普通",2));

this.Library.add(new Chess("痛苦女王","普通",2));

this.Library.add(new Chess("伐木机","普通",2));

this.Library.add(new Chess("剑圣","普通",2));

this.Library.add(new Chess("兽王","普通",2));

this.Library.add(new Chess("水晶室女","普通",2));

this.Library.add(new Chess("敌法师","基础",1));

this.Library.add(new Chess("修补匠","基础",1));

this.Library.add(new Chess("蝙蝠骑士","基础",1));

this.Library.add(new Chess("暗影萨满","基础",1));

this.Library.add(new Chess("发条技师","基础",1));

this.Library.add(new Chess("赏金猎人","基础",1));

this.Library.add(new Chess("卓尔游侠","基础",1));

this.Library.add(new Chess("巨牙海民","基础",1));

this.Library.add(new Chess("食人魔魔法师","基础",1));

this.Library.add(new Chess("魅惑魔女","基础",1));

this.Library.add(new Chess("斧王","基础",1));

}

}

@Override

public void CombineChess() {

// TODO Auto-generated method stub

int i,index1,index2;

Chess c;

System.out.println("========已进入合棋界面========");

if(this.MyChess.size()<=1) {

System.out.println("你没有棋子可以合!");

}

else {

System.out.println("=================");

for(i=0;i<this.MyChess.size();i++) {

c=this.MyChess.get(i);

System.out.println(i+1+":"+" "+c.Name+":"+c.Cost);

}

System.out.println("*****************");

System.out.println("请输入要合成的两个棋子的序号,用空格分开");

Scanner in=new Scanner(System.in);

index1=in.nextInt();

index2=in.nextInt();

Chess c1,c2;

c1=this.MyChess.get(index1-1);

c2=this.MyChess.get(index2-1);

if(c1.Name!=c2.Name) System.out.println("你输错了!");

else {

c1.Name+="Plus ";

c1.Cost*=2;

this.MyChess.remove(index2-1);

}

this.Show();

}

}

@Override

public void SellChess() {

// TODO Auto-generated method stub

int i,place;

Chess c;

System.out.println("========已进入卖棋界面========");

if(this.MyChess.size()==0) {

System.out.println("你没有棋子可以卖!");

}

else {

System.out.println("=================");

for(i=0;i<this.MyChess.size();i++) {

c=this.MyChess.get(i);

System.out.println(i+1+":"+" "+c.Name+":"+(c.Cost/2));

}

System.out.println("*****************");

System.out.println("请输入要卖的棋子的序号");

Scanner in=new Scanner(System.in);

place=in.nextInt()-1;

this.Coins+=this.MyChess.get(place).Cost/2;

this.MyChess.remove(place);

this.Show();

}

}

@Override

public void Update() {

// TODO Auto-generated method stub

this.Round++;

System.out.println("========"+"回合 "+this.Round+" 开始了"+"========");

this.Experience+=1;

this.Coins+=5;

this.Coins+=this.interest;

this.interest=this.Coins/10;

if(this.Experience>=this.LevelUpExperienceOnGrade[this.Grade]) {

this.Experience-=this.LevelUpExperienceOnGrade[this.Grade];

this.Grade++;

}

}

public void Show() {

System.out.println("=================");

System.out.println("名称: "+this.Name);

System.out.println("回合: "+this.Round);

System.out.println("等级: "+this.Grade);

System.out.println("经验: "+this.Experience);

System.out.println("金币: "+this.Coins);

System.out.println("连胜: "+this.ConstantWinning);

System.out.println("连败: "+this.ConstantFailing);

System.out.println("利息: "+this.interest);

System.out.println("*****************");

System.out.println("人口: "+this.Grade);

System.out.println("棋子如下:");

for(int i=0;i<this.MyChess.size();i++) {

switch(MyChess.get(i).Quality) {

case "基础":{

System.out.println(this.MyChess.get(i).Name+" ★");

break;

}

case "普通":{

System.out.println(this.MyChess.get(i).Name+" ★★");

break;

}

case "稀有":{

System.out.println(this.MyChess.get(i).Name+" ★★★");

break;

}

case "史诗":{

System.out.println(this.MyChess.get(i).Name+" ★★★★");

break;

}

case "传说":{

System.out.println(this.MyChess.get(i).Name+" ★★★★★");

break;

}

}

}

System.out.println("=================");

}

@Override

public void BuyChess() {

// TODO Auto-generated method stub

Random rand=new Random();

Scanner in=new Scanner(System.in);

String Order=new String();

int start=this.Library.size();

int i;

boolean CanRefresh=true,breakout=false;

int[] places=new int[5];

LinkedList<Chess> SellingChess=new LinkedList<Chess>();

Chess c=new Chess("无","无",6);

while(CanRefresh==true) {

System.out.println("========已进入购买界面========");

SellingChess.removeAll(SellingChess);

for(i=0;i<5;i++) {

c=new Chess("无","无",6);

while(c.Cost>this.ChessCostOnGrade[this.Grade]) {

places[i]=rand.nextInt(start-i);

c=this.Library.get(places[i]);

}

SellingChess.add(new Chess(c.Name,c.Quality,c.Cost));

}

System.out.println("=================");

for(i=0;i<5;i++) {

c=SellingChess.get(i);

System.out.println((i+1)+":"+" "+c.Name+" "+c.Quality+" "+c.Cost);

}

System.out.println("=================");

breakout=false;

while(!breakout) {

System.out.println("请输入要购买的棋子的序号,不可重复购买同一序号棋子,输入0刷新,输入-1退出");

switch(in.nextInt()) {

case -1:{

breakout=true;

CanRefresh=false;

break;

}

case 0:{

if(this.Coins<2) {

CanRefresh=false;

breakout=true;

break;

}

else {

CanRefresh=true;

breakout=true;

this.Coins-=2;

break;

}

}

case 1:{

if(this.Grade<=this.MyChess.size()) {

System.out.println("人口已满");

breakout=true;

CanRefresh=false;

break;

}

if(this.Coins>SellingChess.get(0).Cost) {

this.MyChess.add(SellingChess.get(0));

this.Coins-=SellingChess.get(0).Cost;

this.Library.remove(places[0]);

start--;

this.Show();

break;

}

else {

System.out.println("你买不起!");

break;

}

}

case 2:{

if(this.Grade<=this.MyChess.size()) {

System.out.println("人口已满");

breakout=true;

CanRefresh=false;

break;

}

if(this.Coins>SellingChess.get(1).Cost) {

this.MyChess.add(SellingChess.get(1));

this.Coins-=SellingChess.get(1).Cost;

this.Library.remove(places[1]);

start--;

this.Show();

break;

}

else {

System.out.println("你买不起!");

break;

}

}

case 3:{

if(this.Grade<=this.MyChess.size()) {

System.out.println("人口已满");

breakout=true;

CanRefresh=false;

break;

}

if(this.Coins>SellingChess.get(2).Cost) {

this.MyChess.add(SellingChess.get(2));

this.Coins-=SellingChess.get(2).Cost;

this.Library.remove(places[2]);

start--;

this.Show();

break;

}

else {

System.out.println("你买不起!");

break;

}

}

case 4:{

if(this.Grade<=this.MyChess.size()) {

System.out.println("人口已满");

breakout=true;

CanRefresh=false;

break;

}

if(this.Coins>SellingChess.get(3).Cost) {

this.MyChess.add(SellingChess.get(3));

this.Coins-=SellingChess.get(3).Cost;

this.Library.remove(places[3]);

start--;

this.Show();

break;

}

else {

System.out.println("你买不起!");

break;

}

}

case 5:{

if(this.Grade<=this.MyChess.size()) {

System.out.println("人口已满");

breakout=true;

CanRefresh=false;

break;

}

if(this.Coins>SellingChess.get(4).Cost) {

this.MyChess.add(SellingChess.get(4));

this.Coins-=SellingChess.get(4).Cost;

this.Library.remove(places[4]);

start--;

this.Show();

break;

}

else {

System.out.println("你买不起!");

break;

}

}

default:{

System.out.println("你输错了!");

break;

}

}

}

}

}

}

进阶项:

1.我们完美模拟了自走棋抽棋的部分,并且为了功能需要添加了金币,经验等多个系统,实现了对自走棋抽棋需求的更加立体的满足。

2.模型操作简便,易上手,可用性较强。简洁明了,能更加明确的体现抽到的棋子和待购区的棋子,充分考虑了用户的使用体验。

3.虽然没有实现图形界面,但是命令行所有的文字提示基本上提供了所有用户需要的信息,因此每次用户抽棋都会给出下一步提示,直观明了。

转载于:https://www.cnblogs.com/Group-5/p/11013188.html

工作日志3——模型代码相关推荐

  1. 【机器学习】人工智能典型应用:班组工作日志转绩效类型

    应用背景: 通信运检一班绩效的机制是利用每天的工作日志,将工作内容按照<一线班组工作积分制考核实施方案(20190108修订)>中的工作基本额定标准库进行对应,就可以知道每天的工分,每月工 ...

  2. 内存数据库内核开发工作日志(初稿)(一)

    内存数据库内核开发工作日志(初稿)(一) 1 初衷 许多人听到内存数据库第一印象就是大型的电信企业,银行的解决方案,但其实内存数据的应用相当广泛,从中型网站并发到批量文件处理都可以有很有效的应用.在商 ...

  3. 菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(九)—— 预测与校验

    系列目录: 菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(一)--数据 菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(二)-- 介绍及分词 菜鸟笔记-DuReader阅读理解基线模 ...

  4. 【连载】高效人士的116个IT秘诀(第2版)——秘诀25快速记录你的工作日志

    上一篇:[连载]高效人士的116个IT秘诀(第2版)--秘诀24为你的时间建一个构造图 等级--初级 平台--全部 成本--免费 一直记录自己所做的事情实际花费了多少时间并不是一件容易的事,但工作日志 ...

  5. 自己闲来无事做的工作日志WEB程序(VB.NET)

    代码下载在 :http://cnnet.europe.webmatrixhosting.net/example/worklog.rar 以下的服务器取消了===取消====服务器关了 [2003.09 ...

  6. 2023年的深度学习入门指南(14) - 不能只关注模型代码

    2023年的深度学习入门指南(14) - 不能只关注模型代码 最近,有一张大模型的发展树非常流行: 这个图是相当不错的,对于加深对于Transformer模型编码器.解码器作用的理解,模型的开源和闭源 ...

  7. 企业管理不可忽视“工作日志”

    1.员工的基本信息. 企业应该要求各相关人员将详细的情况比如,工作职位情况.记录的时间等记录下来,其目的就是要明确各岗位的工作状态及现状.通过及时对照工作标准,对表现优秀的员工进行奖励,对表现差的员工 ...

  8. FOne easyModelVerifier™ 模型/代码Back-to-Back自动化验证工具

    FOne easyModelVerifier™ 模型/代码Back-to-Back自动化验证工具 FOne easyModelVerifier™是南京富士通南大软件技术有限公司自主研发的一款可全自动完 ...

  9. 工作日志、周报的意义

    对于写日志的本人,可以让自己自省每天都干了什么:对自己的工作进行追踪:为了让自己清楚自己手头的工作的情况,能让自己对分配的事情有良好的工作计划与时间安排:君子博学而日参省乎己,则知明而行无过矣: 为了 ...

最新文章

  1. 用Xshell连接Linux系统时输入反斜杠成W
  2. ES6之Module 的加载实现(2)
  3. div中同时存在文本和数字超过两行出省略号
  4. AjaxPro使用说明
  5. java 小于10 自动补零_java 位数自动补0处理
  6. Linq 中的Aggregate一些用法
  7. 学习 ASP.NET MVC (第二回)实战篇
  8. 小米营销总监:中国模式能复制,但要有本地化的独特性
  9. [转载]互联网扫描器 ZMap 完全手册
  10. 三极管开关电路_9012三级管开关电路图大全
  11. java JButton计算器布局
  12. 期货大佬给交易者的交易箴言。
  13. (详细介绍)程序员专属接单平台,赚钱的同时提升自己的技术,并附多个快速开发的脚手架项目开箱即用
  14. CAD梦想画图中的的“绘图工具——绘线命令”
  15. UE4 皮革材质从简单到复杂
  16. java 读取svg元素_Java Batik操作SVG,实现svg读取,生成,动态操作
  17. Java Web3j nonce 获取
  18. 51nod 1387 移数字
  19. 如何裁剪视频画面?快来看看这个详细教程
  20. vue项目点击左侧子菜单,打开一个新的浏览器标签页

热门文章

  1. 这件物品不能添加到您的库中,因为他在你所在的地区不可用
  2. 传智播客 微金所项目实战
  3. js原生alert弹框美化
  4. 十诫诗串词_持续交付的十诫
  5. 人工智能技术概述与入门
  6. 平均工资发布,IT 业超 13 万元居首;Def Con 黑客大会首次在中国举办
  7. 蒲公英 · JELLY技术周刊 Vol.22: npm i react-router@6.0.0-beta.0
  8. 安装Properties Editor
  9. 万户OA牵手携程 助力企业商旅一体化管控
  10. 如何利用视频监控系统遏制考试作弊行为?