forked from james-gray/nagini
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Note.txt
141 lines (128 loc) · 4.47 KB
/
Note.txt
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
137
138
139
140
141
In each round, if the snake will automatically increase or decrease it length depends on the whether it had a food or not, then:
1) Create a variable to store the length of the snake. Every time eat a food, then increase one, otherwise, after each round do an update to decrease one.
Questions here: Not sure if we could get the initial value of the snake length from the server, or the server will actually tell us the length of our snake.
2) Instead of figuring our where exactly the snake is, trunct all the snake into pieces. Only consider the route for the snake head, and all the others and snake body will be treated as the enemy.
Question here: How to avoid the situation that has no way to run?
Suggestion: Keep the length of the sanke between a certain number, eg: 5-7.
3) Create a [][] arrary to track the location of the snake and the position of the enemy and the wall. Now I am thinking it maybe looks like sovling a maze.
----------------------------------------------------coding----------------------------------------------------------------------
Example /start Request
{
"game_id": 1
}
Example /start Response
{
"color": "#FF0000",
"secondary_color": "#00FF00",
"head_url": "http://placecage.com/c/100/100",
"taunt": "OH GOD NOT THE BEES",
"head_type": "pixel",
"tail_type": "pixel"
}
Example /move Request
{
"food": {"data": [{"object": "point","x": 0,"y": 9}],"object": "list"},
"height": 20,
"id": 1,
"object": "world",
"snakes": {"data": [{"body": {"data": [{
"object": "point",
"x": 13,
"y": 19
},
{
"object": "point",
"x": 13,
"y": 19
},
{
"object": "point",
"x": 13,
"y": 19
}],
"object": "list"
},
"health": 100,
"id": "58a0142f-4cd7-4d35-9b17-815ec8ff8e70",
"length": 3,
"name": "Sonic Snake",
"object": "snake",
"taunt": "Gotta go fast"
},
{"body": {"data": [{
"object": "point",
"x": 8,
"y": 15
},
{
"object": "point",
"x": 8,
"y": 15
},
{
"object": "point",
"x": 8,
"y": 15
}],
"object": "list"
},
"health": 100,
"id": "48ca23a2-dde8-4d0f-b03a-61cc9780427e",
"length": 3,
"name": "Typescript Snake",
"object": "snake",
"taunt": ""
}],
"object": "list"
},
"turn": 0,
"width": 20,
"you": {"body": {"data": [
{
"object": "point",
"x": 8,
"y": 15
},
{
"object": "point",
"x": 8,
"y": 15
},
{
"object": "point",
"x": 8,
"y": 15
}
],
"object": "list"
},
"health": 100,
"id": "48ca23a2-dde8-4d0f-b03a-61cc9780427e",
"length": 3,
"name": "Typescript Snake",
"object": "snake",
"taunt": ""
}
}
Example /move Response
{
"move": "up"
}
Example /end Request (body collision || head collision || self collision || starvation || wall collision)
{
"game_id": 10,
"winners": [ "a46b558b-f31b-418f-bb07-6017dd91f653" ],
"dead_snakes": {
"object": "list",
"data": {
"id": "4a35fd1c-434b-431b-839c-edf958d67e9a",
"length": 3,
"death": {
"turn": 4,
"causes": ["self collision"]
}
}
}
}
Example /end Response
Simply return a 200 OK response, the server will stop processing this game moving forward.