package Player;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import Maps.Block;
import Maps.IBlock;
import Maps.MapMgr;
import Menus.MenuMgr;
import Skeletons.FixedStepStrategy;
import Skeletons.ProbabilityDirStrategy;
import Skeletons.RandomDirStrategy;
import Skeletons.RandomStepStrategy;
/**
* @author 12525
*/
public class PlayerMgr{
private Player mActivePlayer; // 当前活动Player
private List<Player> mPlayers = new ArrayList<>(); // 全部Player
/* public void startRound() {
// Continuously advance until the next UserPlayer is encountered
boolean goon = mActivePlayer.advance();
while (goon) {
nextPlayer();
goon = mActivePlayer.advance();
}
}*/
private static PlayerMgr instance;
public static PlayerMgr getInstance() {
if (instance == null) {
instance = new PlayerMgr();
}
return instance;
}
// 重置游戏人数(重新开始)
// Getters/Setters
public List<Player> getAllPlayers() {
return mPlayers;
}
public void addPlayer(Player p) {
mPlayers.add(p);
}
public Player getActivePlayer() {
return mActivePlayer;
}
public void setActivePlayer(Player player) {
mActivePlayer = player;
}
// 重置游戏人数(重新开始)
/*
public void resetPlayers(int num) {
// 确保至少一个玩家,至多8个
if (num < 1) {
num = 1;
}
if (num > 8) {
num = 8;
}
final String[] names = {
"赵一伤",
"钱二败",
"孙三毁",
"李四摧",
"周五输",
"吴六破",
"郑七灭",
"王八衰"
};
// 释放原有players
mPlayers.clear();
// 取第一个Block
Block firstBlock = MapMgr.getInstance().getActivedMap().getBlockByIndex(0);
// 建立全部玩家
for (int i = 0; i < num; i++) {
Player player;
if (i == num - 1) {
// 最后一个是用户玩家
player = new UserPlayer();
} else {
player = new AutoPlayer();
}
player.setName(names[i]);
// 设置Player的初始位置
player.setStand(Dir.Direction.UNKNOWN, firstBlock);
mPlayers.add(player);
}
// 当前Player为第一个
setActivePlayer(mPlayers.get(0));
}
*/
// 激活下一个
/*
public Player nextPlayer() {
// 当前位置
final Player curPlayer = mActivePlayer;
Predicate<Player> func = player -> player == curPlayer;
int index = mPlayers.indexOf(mPlayers.stream().filter(func).findFirst().orElse(null));
if (++index < mPlayers.size()) {
// 下一个Player
setActivePlayer(mPlayers.get(index));
} else {
// 已到最后,取第一个
setActivePlayer(mPlayers.get(0));
}
return mActivePlayer;
}
*/
private PlayerMgr() {
// 私有构造函数
}
public void resetPlayers(int num) {
if (num < 1) {
num = 1;
}
if (num > 8) {
num = 8;
}
String[] names = {
"赵一伤",
"钱二败",
"孙三毁",
"李四摧",
"周五输",
"吴六破",
"郑七灭",
"王八衰"
};
mPlayers.clear();
IBlock firstBlock = MapMgr.getInstance().getActivedMap().getBlockByIndex(0);
/*
for (int i = 0; i < num; i++) {
Player player = new Player();
if (i == num - 1) {
player.setImp(new UserPlayerImp());
} else {
player.setImp(new AutoPlayerImp());
}
player.setName(names[i]);
player.setStand(Dir.Direction.UNKNOWN, firstBlock);
addPlayer(player);*/
// 建立全部玩家
for (int i = 0; i < num; i++) {
Player player = new ExtPlayer();
if (i == num - 1) {
// 最后一个是用户玩家
player.setImp(new Step2UserPlayerImp());
// 设置策略
player.setStepStrategy(new FixedStepStrategy(2));
player.setDirStrategy(new ProbabilityDirStrategy());
} else {
player.setImp(new Step3AutoPlayerImp());
// 设置策略
player.setStepStrategy(new RandomStepStrategy());
player.setDirStrategy(new RandomDirStrategy());
}
player.setName(names[i]);
player.setStand(Dir.Direction.UNKNOWN, firstBlock);
addPlayer(player);
}
setActivePlayer(mPlayers.get(0));
}
public Player nextPlayer() {
Player curPlayer = mActivePlayer;
int curIndex = mPlayers.indexOf(curPlayer);
int nextIndex = (curIndex + 1) % mPlayers.size();
setActivePlayer(mPlayers.get(nextIndex));
return mActivePlayer;
}
public Player findPlayerOnBlock(IBlock block) {
for (Player player : mPlayers) {
if (player.getStand() == block) {
return player;
}
}
return null;
}
public void startRound() {
boolean goon = mActivePlayer.advance();
while (goon) {
nextPlayer();
goon = mActivePlayer.advance();
}
}
public boolean advance() {
return false;
}
/* public Player findPlayerOnBlock(Block block) {
Player found = null;
for (Player player : mPlayers) {
if (player.getStand() == block) {
found = player;
break;
}
}
// 若多个玩家站Block,返回UserPlayer
return found;
}*/
public char flagChar(Dir.Direction d) {
return 0;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
吉林大学软件设计模式平时作业
共396个文件
class:195个
java:71个
xml:15个
需积分: 0 0 下载量 73 浏览量
2024-02-19
22:36:54
上传
评论
收藏 304KB ZIP 举报
温馨提示
吉林大学软件设计模式课程平时作业完整Java代码
资源推荐
资源详情
资源评论
收起资源包目录
吉林大学软件设计模式平时作业 (396个子文件)
03b67ca3f914e535c9444945eeb1e0bb43cdd5 55B
0834f2d607afe55e6104d8aa2cdfffb713f688 263B
0dbfcf95e44b24d7766e8d78a299a7a33ec00a 57B
105779132bf2b8f64d71e35127ca6aa1865077 726B
13d70e8250dfbb1e708987fe4783643f7b4cf2 63B
1482fae48e91be7d767a51a37569994315f4d1 764B
1ce09cd25b5ff8d8a5f1f257dd73abee517c74 216B
1e666d1116fd04f72e42a8c10259930877eeee 54B
20f26274c102cb707e0cd58570ddd18fcb6fee 58B
2160a860a393b26c5f5aeae7de3d6dd3d0dfef 62B
234ac9e2bffd025bae28a8484540156a8cefad 54B
2693daf79ef5e299cdda9e54d285c25fb3c660 69B
27ffdb64e0f1a13eafb1007b60af9ac9f572ea 52B
2e92d1bd38dca9d372350cd370ac7ffbdfd443 57B
324832154ff4bc5e54cca4687116f0dfee8232 52B
33378b5da0c3823e3a5a80526951ead5a55ae9 52B
391b169124cadea967ba65f3fd4bb53bae6d47 55B
3b44124abc1b12cc9580e1400f060079c83a9a 52B
3b47deca7165e75c7a8107cfec39e491d114de 74B
3bde06c6f320f971654ee398a2689dafddd9c4 391B
3d32fe38971001b118a60eb13d94b5f5825ffc 63B
3d5cb572d53ec47ac728d04f3b0155615f7da4 56B
3e40fc084ce4f30b46949be5bbf09fb5270f0d 55B
3f1e3812e491058072efb53e890d3000fa677c 56B
3f6c6f93662a085026105a0bf840498f9714cc 50B
4636bd1640083837a1966f9379455b964a8264 65B
4999f9678d76aa06a4166d44fe0860ed077a39 48B
49f8918ed258a591a28efc0bce263fef904309 64B
4ea9c1e89f20c9deefe0f5fc0d3c35bfc7c0b5 60B
5818eadcb8cbb046564960a4b2b9568b9892b0 55B
59c38fbd57497a72e78859efacc67ac75869da 113B
5f8aa6ffad42ac354a9d65abb3a8802ff342b1 53B
64baaf901417522c53da6dc06d41b172db11d2 63B
6648fe25ee0fe8700cebc5e7d97e1508546e4e 62B
677fe09ed7287c3451c2afa7adb446aff2d096 70B
68eae358936db5fbaf35f7daf8ab5e5edbff01 67B
6aeeccdef105e2073df544cf1773771939e492 455B
6d01994ae68bc245419f6ebb38fe78f28cc3ed 52B
6ea849b2e47f31d42a8f7a91504bfd5426b1fe 57B
711ff3c638f3249d9fa55d3c63287e2b77c9cb 184B
73223703e6fa1df0f53ca1f9ab2c102c307de2 61B
73af81c364d73e89e3d9954f3a2e4beab3c388 60B
79c1e57e69313d9dbb87ed7d94416c6111953d 58B
7a4627781f59b96f3a571a4571421c6ca089eb 59B
82e2a43c0eac5f6a2d5b3f8d6d2e9f06f1311d 61B
83114fe6c9edb376c61e17def7e9aa8bc668e9 51B
8d1099657e34d4e7a68aadc730b3ecad84667d 221B
90a9439fc0870b08068603db7827ed5f9f8bbd 51B
954ce60c6d453f4bd4cc552bae8070e572a4e4 55B
9abd03b04d074aaec48167a6bb060019cc94dc 61B
9c9af88c2cc09142de0e03b9d141d8d9c62403 55B
9cd34d718ffb3595ad161f8fa4ea96f020b040 61B
a1fb383ba9edc2bcb1d0c23c9f9ecbab311af3 54B
a25f7f4cb416c083d265558da75d457237d671 155B
a98dfecc254b3ebd5f39d7cf5a1c3a7785ddec 334B
aa25ce4b00d7c6eb49f577e3cad55b8261e6d8 756B
aaa512d8bb72ec70cbfc591bf7e94a5eceb9bf 61B
ab6ac84352981a01769c9d1749df74db90a5a2 61B
abbc6b83bc0d89aea5c56888c72dfe4715d113 58B
b148f902246bc9383464599cce7583160dc3d9 69B
b488206c9f178e431c17d348c901eb8523b957 54B
b82b9309537965085a5f9e5b8b1cd47feaeaf9 56B
b9a16ce2c3bc8934e15ddc1a72f7e39c53bbf8 310B
b9b71c0c1e257433f7faed52123552456aba4a 49B
ba4f514d4a07425ee22958c08a81a289ebbe12 58B
bae49d78cdb2540ca8aac31d8f1020aedb1836 160B
bc4040e476699607b3a6e34c1378a9c0268088 55B
bfe76caead667b35fa68290ed1f55620a8dc03 64B
c43f599ab3fe41e2e8f35e329c3ab97bc2ad76 63B
c9dece627f6ffd2363d4bfa81337fe594cdcce 50B
ca61213f3298e185ed76505150fb9ad07c16a8 54B
caa0481496a118ef455207116a5dcb867ced99 54B
cb5da14ddf591f3bfb806676adf7876edefd71 56B
cb89a8c8517f39731912a1bbd68308639fb4cc 421B
MapFactory.class 5KB
MapFactory.class 5KB
MapFactory.class 5KB
PlayerMgr.class 4KB
PlayerImp.class 4KB
PlayerImp.class 4KB
PlayerMgr.class 4KB
PlayerMgr.class 4KB
Block.class 4KB
Block.class 4KB
Player.class 3KB
Player.class 3KB
CityMapDirector.class 3KB
CityMapDirector.class 3KB
CityMapDirector.class 3KB
Player.class 3KB
DynamicProxy.class 3KB
BlockDecorator.class 3KB
BlockDecorator.class 3KB
Block.class 2KB
DirStrategy.class 2KB
DirStrategy.class 2KB
TownMapDirector.class 2KB
TownMapDirector.class 2KB
TownMapDirector.class 2KB
BlockProtoFactory.class 2KB
共 396 条
- 1
- 2
- 3
- 4
资源评论
Polaris北极星少女
- 粉丝: 159
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功