import java.util.Date;
import java.util.Scanner;import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.ImageIcon;
/*** 后宫选妃Java控制台版* @author 棣哩哩* @date 2018年10月12日 上午9:29:37* @remarks TODO*/
public class AppMain {public static void main(String[] args) {Scanner input = new Scanner(System.in);/** 野生美女的姓名数组*/String[] newNameArray = {"褒姒", "陈圆圆", "苏小小", "甄嬛", "钟无艳"};int newNameCount = newNameArray.length;/** 后宫娘娘的姓名数组,预留5个名额空间*/String[] nnNameArray = {"卜凡", "易烊千玺", "黄景瑜", "宁泽涛", "迪丽热巴", "", "", "", "", ""};/** 级别数组*/String[] levelNames = {"贵人", "嫔妃", "贵妃", "皇贵妃", "皇后"};/** 对应每个娘娘的级别*/int[] level = new int[10];/** 对应每个娘娘的好感度*/int[] loves = new int[10];/** 娘娘的初始数量为5*/int nnCount = 5;int gameDays = 1; //默认游戏运行10天    //设定默认好感度for (int i = 0; i < nnCount; i++) {loves[i] = 100;}//游戏的主界面JOptionPane.showMessageDialog(null, "陛下,您来啦", "欢迎来到后宫选妃", 0, new ImageIcon("images/index.jpg"));while(gameDays <= 10){
//          System.out.println("游戏进行到第" + gameDays + "天");
//          System.out.println("1、皇帝下旨选妃\t\t(增加)");
//          System.out.println("2、翻牌宠幸\t\t(查找、修改状态)");
//          System.out.println("3、打入冷宫\t\t(删除)");
//          System.out.print("陛下请选择:");
//          int choice = input.nextInt();String strMenu = "1、皇帝下旨选妃\n";strMenu += "2、翻牌宠幸\n";strMenu += "3、打入冷宫\n";strMenu += "陛下请选择:";Object objResult = JOptionPane.showInputDialog(null, strMenu, "第" + gameDays + "天", 0, new ImageIcon("images/emperor.jpg"), new String[]{"1", "2", "3"},1);//要判断用户选择取消的情况if(objResult == null){break;//可以自行测试break和continue的区别,break直接结束;continue重复出现选择界面。}//将用户的选择(1-3之间的字符串)转换成整型//int choice = Integer.parseInt(objResult.toString());switch (objResult.toString()) {case "1"://"1、皇帝下旨选妃\t\t(增加)"if(nnCount == nnNameArray.length){System.out.println("大猪蹄子,后宫已经人满为患了,不可继续纳妾");break;}
//              System.out.print("请输入新晋娘娘的名讳:");
//              String newName = input.next();objResult = JOptionPane.showInputDialog(null, "请选择秀女", "选妃", 0, new ImageIcon("images/xuanx.jpg"), newNameArray, null);if(objResult == null){break;//可以自行测试break和continue的区别,break跳到每日结算后进入第二天;continue跳回第一天陛下请选择界面。}JOptionPane.showMessageDialog(null, objResult.toString(), "选中的嫔妃", 0, new ImageIcon("images/" + objResult.toString() + ".jpg") );//增加姓名数组,好感度数组,级别数组nnNameArray[nnCount] = objResult.toString();loves[nnCount] = 100;//其他娘娘好感度-10for (int i = 0; i < nnCount; i++) {loves[i] -= 10;}nnCount++;break;case "2"://"2、翻牌宠幸\t\t(修改状态)" +20 其他-10
//              System.out.print("请输入娘娘的名讳:");
//              String name = input.next();objResult = JOptionPane.showInputDialog(null, "陛下请选择", "翻牌", 0, new ImageIcon("images/翻牌.jpg"), nnNameArray, null);if(objResult == null){break;}//查找String name = objResult.toString();int searchIndex = Integer.MIN_VALUE;//要查找字符串的下标for (int i = 0; i < nnCount; i++) {if(name.compareTo(nnNameArray[i]) == 0){//姓名相等的情况searchIndex = i;break;}}if(searchIndex == Integer.MIN_VALUE){System.out.println("大猪蹄子,查无此人");break;}//找到的情况:当前好感度+20并升一级,其他人-10loves[searchIndex] += 20;if(level[searchIndex] == levelNames.length - 1){JOptionPane.showMessageDialog(null, nnNameArray[searchIndex] + "娘娘已经母仪天下,升级失败", "翻牌结果", 0, new ImageIcon("images/"+ nnNameArray[searchIndex] +".jpg"));//System.out.println(nnNameArray[searchIndex] + "娘娘已经母仪天下,升级失败");//break;}else{level[searchIndex]++;for (int i = 0; i < nnCount; i++) {if(i == searchIndex){  //排除翻牌宠幸的妃子continue;}loves[i] -= 10;}//System.out.println("宠幸" + nnNameArray[searchIndex] + ",好感度+20,升级为"+ levelNames[level[searchIndex]] +"其他好感度-10:");JOptionPane.showMessageDialog(null, "宠幸" + nnNameArray[searchIndex] + ",好感度+20,升级为"+ levelNames[level[searchIndex]] +"其他好感度-10:", "翻牌结果", 0, new ImageIcon("images/"+ nnNameArray[searchIndex] +".jpg"));}break;case "3"://"3、打入冷宫\t\t(删除)"objResult = JOptionPane.showInputDialog(null, "陛下请选择", "打入冷宫", 0, new ImageIcon("images/Gaogf.jpg"), nnNameArray, null);if(objResult == null){break;}//查找String delname = objResult.toString();int delIndex = Integer.MIN_VALUE;for (int i = 0; i < nnCount; i++) {if(delname.compareTo(nnNameArray[i]) == 0){//姓名相等的情况delIndex = i;break;}}if(delIndex == Integer.MIN_VALUE){System.out.println("大猪蹄子,查无此人");break;}for (int i = delIndex; i < nnCount; i++) {nnNameArray[i] = nnNameArray[i + 1];}nnCount--;for (int i = 0; i < nnCount; i++) {loves[i] += 10;}JOptionPane.showMessageDialog(null, objResult.toString() + "打入冷宫,其他娘娘好感度+10", "冷宫", 0, new ImageIcon("images/" + objResult.toString() + ".jpg") );//System.out.println("宠幸" + nnNameArray[searchIndex] + ",好感度+20,升级为"+ levelNames[level[searchIndex]] +"其他好感度-10:");break;default:System.out.println("请输入1-3之间的整数!");continue;}
//          System.out.println("姓名\t级别\t好感度");
//          for (int i = 0; i < nnCount; i++) {
//              System.out.println(nnNameArray[i] + "\t" + levelNames[level[i]] + "\t" + loves[i]);
//          }//如果有3个以上的妃子好感度都低于60,那么发生暴乱,游戏强制退出int count = 0;for (int i = 0; i < nnCount; i++) {if(loves[i] < 60){count++;}}String resultValue = "后宫有3个以上娘娘好感度低于60,发生暴乱\n";resultValue += new Date().toLocaleString();if(count >= 3){JOptionPane.showMessageDialog(null, resultValue, "突发事件:后宫暴乱", 0, new ImageIcon("images/暴乱.jpg"));System.exit(0);}//每日结算String value = "后宫的情况如下:\n";for (int i = 0; i < nnCount; i++) {//System.out.println(nnNameArray[i] + "\t" + levelNames[level[i]] + "\t" + loves[i]);value += String.format("%s    %s    %d\n", nnNameArray[i], levelNames[level[i]], loves[i]);}JOptionPane.showMessageDialog(null, value, "每日结算", 0, new ImageIcon("images/timg.jpg"));gameDays++;} }
}

小项目1——后宫选妃相关推荐

  1. 你想体验后宫选妃吗?js带你体验后宫选妃

    你想体验后宫选妃吗?js带你体验后宫选妃 1.点击开始,启动定时器,获取当前时间置于文本框中,每隔10秒记录下来选中的妃子,点击去重,可以去除重复的妃子名 2.点击停止,停止选妃 效果实现: 代码实现 ...

  2. java后宫选妃文字版

    package ImperialHaremOrSeraglio; import java.util.Scanner; /** 后宫选妃 @author 大杨 *@date 2019年8月17日 上午1 ...

  3. 老九C语言41课项目实战-皇帝的后宫

    Tips: 1.二维数组里面高维可以不要,低维需要保留. 2.if(strcmp(tempName,names[i]) == 0) 需要引入头文件 #include <string.h> ...

  4. C语言写一个很好玩的皇帝的后宫小游戏

    C语言写一个很好玩的皇帝的后宫小游戏 前言 先演示一下 上源码 总结 前言 只是单纯喜欢C语言,闲着无事把以前学习的时候的案例编了一下,都是很基础的代码,for,swich,if这些,基础好的看完后完 ...

  5. C语言小游戏(皇帝和他的后宫)

    小游戏(皇帝和他的后宫) 今天我们来玩一个C语言的小游戏,皇帝和他的后宫.(所有代码我放在github上了,在文章末尾) 这个游戏是仿照着老九学堂的C语言课程写得.这里面运用了二维数组的相关知识. 游 ...

  6. [原创] HBuildX,微信小程序模拟器报错(如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目)

    今天在学习使用uniapp,开发微信小程序时第三方登录时,HBuild编辑器报了一个错误,经过定位分析,确定代码是没有问题的,报错如下 如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目 经过 ...

  7. 二维数组练手小程序--后宫管理

    前言 学习C语言两个星期,用这个小小的文字游戏练手. 这个程序的知识点是: 二维数组.循环.各种基础的函数. 内容和创意 都来源于网易云课堂→老九零基础学编程 的教学课程(https://study. ...

  8. java 90坦克大战_java小项目之:坦克大战,90后的集体回忆杀!

    坦克大战小项目! 在小学初中的时候,我相信我们都曾经沉迷于一种玩具"红白机",这应该是80后90后的童年回忆.用绝对好好学习的誓言,求着父母买一台.自己学会插在电视机上,再和小伙伴 ...

  9. synchronized 王的后宫总管,线程是王妃

    假如 synchronized 是「王」身边的「大总管」,那么 Thread 就像是他后宫的王妃.「王」每日只能选择一个王妃陪伴,王妃们会想方设法争宠获得陪伴权,大总管需要通过一定的手段让王「翻牌」一 ...

最新文章

  1. RabbitMQ入门之安装配置与简单实例
  2. Java 深、浅克隆
  3. VTK:Snippets之ReadPolyData
  4. 【百度地图API】如何制作可拖拽的沿道路测距
  5. 老板和主管不懂SEO,乱给SEO人员下指令怎么办?
  6. python tkinter控件_python GUI作业:使用tkinter的重要控件
  7. 性价比泛滥后,网易严选情怀路线还能否继续吃香?
  8. ALGO-162——Airport Configuration
  9. 2018生活消费趋势:越来越多95后开始泡枸杞
  10. JQuery实现轮播图及其原理
  11. 【优化算法】饥饿游戏搜索算法(HGS)【含Matlab源码 1802期】
  12. 论文公式居中、编号右对齐
  13. 致远互联的下一步:从“协同”到“门户”
  14. 不要找我了,我要去盘核桃了!
  15. 关于魔兽的电脑优化配置方法
  16. SCRUM Beta Day 1
  17. HYCON单片机_以32位MCU-HY16F198实现AC电流量测应用-测试测量-与非网
  18. 手机无线连接电脑、抓取日志、日志检索命令
  19. 翻译软件不准确的原因
  20. 【问题思考总结】武忠祥排除法漏洞(考研数学)

热门文章

  1. 京东企业采购服务升级 技术能力以软件形式输出
  2. 测试覆盖率工具:EclEmma
  3. LOL服务器修改韩服,LOL客户端里面页面怎么改成韩服那样
  4. reverse、inverse和converse区别
  5. 集体改图片格式和排序命名
  6. python中pyinstaller库的使用(第三方库) 实例8:科赫雪花小包裹
  7. ESP32 ESP-IDF CMake Windows开发环境搭建
  8. (剪花布条、客似云来)笔试强训
  9. 【Flash新手入门教程】实例讲解引导层的应用
  10. python爬虫下载文件