狼人杀(身份随机分配)

发布时间:2024-12-09 19:22

狼人杀是一种流行的推理游戏。 #生活乐趣# #棋类#

狼人杀,身份分配。

12人身份,3个阵营。分配身份。
阵营:
神民:预言家、女巫、猎人、白痴
平民:4民
狼人:4 狼人

程序执行:
分配身份
退出
点击分配身份,将12个身份随机分给12个用户,打印出来。
例如:
1.预言家 7.女巫
2.平民 8.狼人
3.猎人 9狼人
4.狼人 10.平民
5.白痴 11狼人
6.平民 12.平民
(进阶功能,可以做一个猜身份的功能)
每次分配身份结果都随机,不是固定为上述功能。

package com.yong; import java.util.*; public class WerewolfKill { private static Random random=new Random(); private static Scanner scanner=new Scanner(System.in); private static boolean antidote=true;//解药 private static boolean poison=true;//毒药 private static List<Map<String,Object>> players=new ArrayList<>();//场上玩家信息数组<名称,身份,种族> public static void main(String[] args) { /*玩家身份初始化*/ identityInit(); System.out.println(players.toString()); System.out.println("游戏开始!"); while (judgePriesthood()&&judgeWolf()&&judgePeople()){ wolfsKill(); } if(judgeWolf()==false){ System.out.println("游戏结束,好人胜利!"); }else { System.out.println("游戏结束,狼人胜利!"); } } /*玩家身份初始化*/ public static void identityInit(){ List<Map<String,Object>> identitys=new ArrayList<>();//身份数组<身份名称,数量,种族> String identity[]={"预言家","女巫","猎人","白痴","平民","狼人"}; Integer amount[]={1,1,1,1,4,4}; String race[]={"神","神","神","神","人","狼"}; for(int i=0;i<identity.length;i++){ Map<String,Object> map=new HashMap<>(); map.put("identity", identity[i]); map.put("amount", amount[i]); map.put("race", race[i]); identitys.add(map); } for(int i=0;i<12;i++){ Map<String,Object> map=new HashMap<>(); Integer num=positiveNumber(0,identitys.size()); map.put("name", "玩家"+(i+1)); map.put("identity",identitys.get(num).get("identity")); map.put("race",identitys.get(num).get("race")); identitys.get(num).put("amount",(Integer)identitys.get(num).get("amount")-1); if((Integer)identitys.get(num).get("amount")==0){ identitys.remove(num.intValue()); } players.add(map); } } /*夜晚-狼人投票s人*/ public static void wolfsKill(){ System.out.println("喔...,天黑请闭眼,狼人请睁眼!"); for(int i=0;i<players.size();i++){ System.out.print(players.get(i).get("name")+":"); if(players.get(i).get("identity").equals("狼人")){ System.out.print(players.get(i).get("identity")+"; "); }else{ System.out.print("好人; "); } } System.out.println(); System.out.println("淘汰玩家(输入玩家序号1,2..)..."); int a=scanner.nextInt(); int b=-1; for(int i=0;i<players.size();i++){ if(players.get(i).get("name").equals("玩家"+a)){ prophet(); int k=witch(a); if(k==-2){ a=-1; break; } if(k>=0){ b=k; } players.remove(i); break; } } referendum(a,b); } /*白天-全体公投*/ public static void referendum(int a1,int a2){ if(a1==-1&&a2==-1){ System.out.println("今晚平安夜!"); }else if(a1!=-1&&a2>=0){ System.out.println("天亮了,玩家"+a1+","+a2+"死亡!"); System.out.println("请玩家"+a1+"发表遗言..."); String deathStr1=scanner.next(); System.out.println("请玩家"+a2+"发表遗言..."); String deathStr2=scanner.next(); }else{ System.out.println("天亮了,玩家"+a1+"死亡!"); System.out.println("请玩家"+a1+"发表遗言..."); String deathStr=scanner.next(); } int num=positiveNumber(0,players.size()); System.out.println("随机发言,从"+players.get(num).get("name")+"开始发言"); for(int i=0;i<players.size();i++){ if(num>players.size()-1){ num=0; } System.out.println("请"+players.get(num).get("name")+"发言..."); String str=scanner.next(); num++; } System.out.println(); System.out.println("发言完毕,开始全体公投"); for(int i=0;i<players.size();i++) { System.out.print(players.get(i).get("name") + "; "); } System.out.println(); System.out.println("淘汰玩家(输入玩家序号)..."); int b=scanner.nextInt(); for(int i=0;i<players.size();i++){ if(players.get(i).get("name").equals("玩家"+b)){ System.out.println("玩家"+b+"死亡,请发表遗言..."); String outStr=scanner.next(); hunter(i); players.remove(i); break; } } } /*猎人技能*/ public static void hunter(int index){ if(players.get(index).get("identity").equals("猎人")){ System.out.println("==猎人技能=="); for(int k=0;k<players.size();k++) { System.out.print(players.get(k).get("name") + "; "); } System.out.println(); System.out.println("猎人请发动技能,选择淘汰玩家..."); int b=scanner.nextInt(); for(int j=0;j<players.size();j++){ if(players.get(j).get("name").equals("玩家"+b)){ System.out.println("玩家"+b+"被猎人带走"); players.remove(j); break; } } } } /*预言家技能*/ public static void prophet(){ k: for(int j=0;j<players.size();j++){ if(players.get(j).get("identity").equals("预言家")) { System.out.println("==预言家技能=="); System.out.println("预言家请睁眼,今晚你要查验身份的玩家(输入玩家序号1,2..)..."); int a = scanner.nextInt(); for (int i = 0; i < players.size(); i++) { if (players.get(i).get("name").equals("玩家" + a)) { if (players.get(i).get("identity").equals("狼人")) { System.out.println(players.get(i).get("name") + ":" + players.get(i).get("identity")); } else { System.out.println(players.get(i).get("name") + ":" + "好人"); } break k; } } } } } /*女巫技能*/ public static int witch(int index) { for(int i=0;i<players.size();i++) { if (players.get(i).get("identity").equals("女巫")) { System.out.println("==女巫技能=="); if(antidote==true){ System.out.println("今夜死的是玩家"+index+"是否救他?(1:救 0:不救)"); int ii=scanner.nextInt(); if(ii==1){ antidote=false; return -2; } } if(poison==true){ System.out.println("今夜你是否使用毒药?(1:用 0:不用)"); int ii=scanner.nextInt(); if(ii==1){ for(int k=0;k<players.size();k++) { System.out.print(players.get(k).get("name") + "; "); } System.out.println(); System.out.println("女巫发动技能,请选择淘汰玩家..."); int b=scanner.nextInt(); for(int j=0;j<players.size();j++){ if(players.get(j).get("name").equals("玩家"+b)){ poison=false; players.remove(j); return b; } } } } } } return -3; } /*判断场上是否还有神职*/ public static Boolean judgePriesthood(){ int i=0; for(int j=0;j<players.size();j++){ if( players.get(j).get("race").equals("神")){ i++; } } if(i==0){ return false; }else { return true; } } /*判断场上是否还有狼*/ public static Boolean judgeWolf(){ int i=0; for(int j=0;j<players.size();j++){ if( players.get(j).get("race").equals("狼")){ i++; } } if(i==0){ return false; }else { return true; } } /*判断场上是否还平民*/ public static Boolean judgePeople(){ int i=0; for(int j=0;j<players.size();j++){ if( players.get(j).get("race").equals("人")){ i++; } } if(i==0){ return false; }else { return true; } } /*范围随机取值*/ public static Integer positiveNumber(Integer MIN, Integer MAX){ return random.nextInt(MAX) % (MAX - MIN + 1) + MIN; } }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252

网址:狼人杀(身份随机分配) https://www.yuejiaxmz.com/news/view/427416

相关内容

一匹素食主义的狼
野狼(上下)
《魔兽世界猎人宠物幽灵狼的获取与技巧》(如何成功获得稀有宠物幽灵狼)
吸尘洗地除螨 真正一机顶三机 莱克天狼星开创清洁电器“True 3in1”时代
莱克天狼星全屋吸尘洗地机,你搞不定的卫生难题它都能一机解决
模拟人生4狼人秘籍大全
随身带着照相机
拒绝变换工具,莱克天狼星吸尘洗地机,一机深度清洁全屋
健身饮食早中晚怎么分配
吸尘洗地除螨 真正一机顶三机 莱克天狼星开创清洁电器“True 3 in 1”时代

随便看看