-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAI.cs
More file actions
92 lines (88 loc) · 2.56 KB
/
AI.cs
File metadata and controls
92 lines (88 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using THBSimulate;
namespace THBSimulate
{
abstract class AI
{
protected Player own;
public AI(Player own) { this.own = own; }
public abstract void PrepareUpdate();
public abstract void JudgeUpdate();
public abstract void DrawUpdate();
public abstract void PlayUpdate();
public abstract void DiscardUpdate();
public abstract void EndUpdate();
public static AI BindAI(Player owner,string name)
{
return name switch
{
"小恶魔" => new LitteDemoAI(owner),
"妖梦" => new YoumuAI(owner),
"白板" => new BaiBanAI(owner),
_ => throw new Exception("不存在的AI!")
};
}
}
abstract class ComputerAI : AI
{
protected ComputerAI(Player own) : base(own)
{
}
}
class BaiBanAI:ComputerAI
{
public BaiBanAI(Player own) : base(own)
{
}
public override void PrepareUpdate()
{
GameManager.Instance.Scene.HasToken =own;
own.strength = 1;
}
public override void JudgeUpdate()
{
if (own.judgesArea.Count <= 0) return;
}
public override void DrawUpdate()
{
own.Draw(GameManager.Instance.Scene.stackManager.Draw(2));
}
public override void PlayUpdate()
{
while (own.FirstPlayableCard != null)
{
var card = own.FirstPlayableCard;
if (card is Attack)
{
own.Play(card, GameManager.Instance.Scene.players[0].id == own.id ? GameManager.Instance.Scene.players[1] : GameManager.Instance.Scene.players[0]);
}
else { own.Play(card); }
}
}
public override void DiscardUpdate()
{
int maxCards = own.Hp > 0 ? own.Hp : 0;
int discardNum = own.handCardsArea.Count - maxCards;
own.Discard(discardNum);
}
public override void EndUpdate()
{
}
}
class LitteDemoAI : BaiBanAI
{
public LitteDemoAI(Player own) : base(own)
{
}
}
class YoumuAI : BaiBanAI
{
public YoumuAI(Player own) : base(own)
{
}
}
}