-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTemplate.java
More file actions
136 lines (96 loc) · 2.78 KB
/
Template.java
File metadata and controls
136 lines (96 loc) · 2.78 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package currentpackage;
import battlecode.common.*;
public strictfp class Template {
public enum SoldierState {
}
public enum SoldierAction{
}
public enum SoldierMovement{
}
static SoldierState currentState = SoldierState.Exploring;
static SoldierAction selectedAction = SoldierAction.Attack;
static SoldierMovement selectedMovement = SoldierMovement.Kite;
static Pathfinder pathfinder;
static RobotInfo[] enemies;
static RobotInfo[] allies;
static RobotController rc;
static boolean initialized = false;
static MapLocation target;
static String indicatorString;
static boolean moveThenAct;
public static void run() throws GameActionException {
if(!initialized){
onUnitInit(); // first time starting the bot, do some setup
initialized = true;
}
initTurn(); // cleanup for when the turn starts
// sense part
sense();
//think part, NOTE -> later one we might want to t
// take into account whether your action and movement are available,
//and what order you want to do them in
//select your next state, movement, and action based on comms, sensor data, and state
// interpret overall macro state
readComms();
// optimize selected action/movement over all sensed objects
// you should be writing to comms as you detect important information
perEnemy();
perAlly();
perObjective();
//act part should be triggered by think part, see methods below
executeMovementAndAction();
debug();
// prints the indicator string
}
static void onUnitInit(){
}
static void initTurn(){
indicatorString = "";
}
static void readComms(){
}
static void sense(){
}
static void perEnemy(){
for(Enemy enemy : enemies){
}
}
static void perAlly(){
for(Ally ally : allies){
}
}
static void perObjective(){
}
static void executeMovementAndAction(){
if(rc.isMovementReady() && rc.isActionReady()){
if(moveThenAct){
move();
act();
} else {
act();
move();
}
} else if(rc.isActionReady()){
act();
} else if(rc.isMovementReady()){
move();
}
}
static void act(){
switch(selectedAction){
case Attack:
rc.attack();
break;
}
}
static void move(){
switch(selectedMovement){
case PathTowardBF:
bfPathTo(x);
break;
}
}
static void debug(){
rc.setIndicatorString(indicatorString);
}
}