 # Untitled

a guest
May 22nd, 2021
13
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. import math
2. import random
3. import csv
4. import re
5.
7. players = []
8. with open('players.csv', newline='') as csvfile:
11. players.append(row)
12.
13. #special rounding where X.YZ has a YZ% chance of being X+1 and a 1-YZ% chance of being X
14. def weightedround(x):
18. if roll < x:
20. else:
22. return result
23.
24. #get rosters and other gameplan options
25. away_att = [1,2]
26. away_mid = [3,4,5]
27. away_def = [6,7,8]
28. away_keep = 
29. away_keepdepth = [3,3,3,2,2,1]
30. home_att = [10,11,12]
31. home_mid = [13,14]
32. home_def = [15,16,17]
33. home_keep = 
34. home_keepdepth = [3,2,2,2,1,1]
35.
36. away_roster = []
37. away_stats = []
38. home_roster = []
39. home_stats = []
40.
41. away_score = 0
42. home_score = 0
43.
44. for i in away_att:
45. index = int(players[i])
46. position = players[i]
47. name = players[i]
48. traits = players[i]
49. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
50. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
51. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
52. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
53. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
54. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
55. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
56. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
57. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
58. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
59. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
60. AGG = int(players[i])
61. away_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
62. ##0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
63. away_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
64. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
65. for i in away_mid:
66. index = int(players[i])
67. position = players[i]
68. name = players[i]
69. traits = players[i]
70. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
71. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
72. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
73. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
74. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
75. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
76. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
77. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
78. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
79. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
80. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
81. AGG = int(players[i])
82. away_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
83. away_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
84. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
85. for i in away_def:
86. index = int(players[i])
87. position = players[i]
88. name = players[i]
89. traits = players[i]
90. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
91. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
92. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
93. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
94. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
95. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
96. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
97. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
98. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
99. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
100. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
101. AGG = int(players[i])
102. away_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
103. away_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
104. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
105. for i in away_keep:
106. index = int(players[i])
107. position = players[i]
108. name = players[i]
109. traits = players[i]
110. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
111. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
112. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
113. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
114. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
115. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
116. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
117. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
118. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
119. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
120. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
121. AGG = int(players[i])
122. away_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
123. away_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
124. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
125. for i in home_att:
126. index = int(players[i])
127. position = players[i]
128. name = players[i]
129. traits = players[i]
130. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
131. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
132. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
133. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
134. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
135. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
136. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
137. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
138. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
139. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
140. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
141. AGG = int(players[i])
142. home_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
143. home_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
144. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
145. for i in home_mid:
146. index = int(players[i])
147. position = players[i]
148. name = players[i]
149. traits = players[i]
150. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
151. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
152. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
153. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
154. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
155. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
156. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
157. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
158. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
159. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
160. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
161. AGG = int(players[i])
162. home_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
163. home_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
164. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
165. for i in home_def:
166. index = int(players[i])
167. position = players[i]
168. name = players[i]
169. traits = players[i]
170. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
171. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
172. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
173. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
174. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
175. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
176. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
177. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
178. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
179. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
180. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
181. AGG = int(players[i])
182. home_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
183. home_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
184. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
185. for i in home_keep:
186. index = int(players[i])
187. position = players[i]
188. name = players[i]
189. traits = players[i]
190. POS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
191. REA = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
192. HAN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
193. MAR = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
194. TAC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
195. PAS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
196. DRI = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
197. OFF = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
198. VIS = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
199. FIN = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
200. ACC = round(int(players[i])+random.gauss(0,0.25)+random.gauss(0.15,0.05)*(int(players[i])-int(players[i])),2)
201. AGG = int(players[i])
202. home_roster.append([index,position,name,traits,POS,REA,HAN,MAR,TAC,PAS,DRI,OFF,VIS,FIN,ACC,AGG])
203. ##0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
204. home_stats.append([index,position,name,0,0,0,0,0,0,0,0,0,0])
205. ##0 1 2 3 goal attempt, 4 goal on target, 5 goal made, 6 pass attempt, 7 pass made, 8 tackle attempt, 9 tackle made, 10 interceptions, 11 shots against, 12 shots allowed
206. print(away_roster)
207. print(home_roster)
208.
209. #roll extra time
210. extra_time = round(max(random.gauss(150,45),0))
211. time = 1800 + extra_time
212. print("The first half will be 30 minutes and feature",extra_time // 60,"minutes and",extra_time % 60,"seconds of extra time")
213.
214. #get kickoff possession
215. def kickoff(x):
216. global possession
217. global depth
218. global offense
219. global time
220. depth = 2
221. if x == "Home":
222. i = 0
223. while i < len(home_roster):
224. x = home_roster[i]
225. if x == home_mid:
226. possession = i
227. i += 1
228. else:
229. i += 1
230. if time - extra_time <= 0:
231. minutes = str((time - extra_time) // 60)
232. seconds = str(-1*(time - extra_time) % 60)
233. timelist = [minutes,":",seconds.zfill(2)]
234. else:
235. minutes = str((time - extra_time) // 60)
236. seconds = str((time - extra_time) % 60)
237. timelist = [minutes,":",seconds.zfill(2)]
238. print("".join(timelist)," And there's the kickoff, with",home_roster[possession],"takes possession")
239. elif x == "Away":
240. i = 0
241. while i < len(away_roster):
242. x = away_roster[i]
243. if x == away_mid:
244. possession = i
245. i += 1
246. else:
247. i += 1
248. if time - extra_time <= 0:
249. minutes = str((time - extra_time) // 60)
250. seconds = str(-1*(time - extra_time) % 60)
251. timelist = [minutes,":",seconds.zfill(2)]
252. else:
253. minutes = str((time - extra_time) // 60)
254. seconds = str((time - extra_time) % 60)
255. timelist = [minutes,":",seconds.zfill(2)]
256. print("".join(timelist)," And there's the kickoff, with",away_roster[possession],"takes possession")
257.
258. #if they'll take a shot
259. def takeshot(x):
260. global offense
261. global possession
262. global time
263. take_roll = random.randint(1,60 - x*10)
264. if offense == "Home":
265. y = home_roster[possession]
266. if take_roll > y:
267. result = False
268. elif take_roll <= y:
269. result = True
270. home_stats[possession] += 1
271. elif offense == "Away":
272. y = away_roster[possession]
273. if take_roll > y:
274. result = False
275. elif take_roll <= y:
276. result = True
277. away_stats[possession] += 1
278. return result
279.
280. #is shot on target
281. def ontarget():
282. global offense
283. global possession
284. global depth
285. global time
286. target_roll = random.randint(1,15 + depth * 15)
287. if offense == "Home":
288. y = weightedround(home_roster[possession])
289. if target_roll > y:
290. result = False
291. elif target_roll <= y:
292. result = True
293. home_stats[possession] += 1
294. elif offense == "Away":
295. y = weightedround(away_roster[possession])
296. if target_roll > y:
297. result = False
298. elif target_roll <= y:
299. result = True
300. away_stats[possession] += 1
301. time -= weightedround(random.gauss(6,1))
302. print(target_roll,y)
303. return result
304.
305. #is it good
306. def goal():
307. global offense
308. global possession
309. global depth
310. global time
311. global away_score
312. global home_score
313. global time
314. if time - extra_time <= 0:
315. minutes = str((time - extra_time) // 60)
316. seconds = str(-1*(time - extra_time) % 60)
317. timelist = [minutes,":",seconds.zfill(2)]
318. else:
319. minutes = str((time - extra_time) // 60)
320. seconds = str((time - extra_time) % 60)
321. timelist = [minutes,":",seconds.zfill(2)]
322. if offense == "Home":
323. away_stats +=1
324. shot_roll = random.randint(0,20)+weightedround(random.gauss(home_roster[possession],0.25))
325. keeper_roll = max(random.randint(0,30),weightedround(random.gauss(away_roster,0.25)))+weightedround(random.gauss(away_roster,0.25))
326. if shot_roll > keeper_roll:
327. result = True
328. away_stats +=1
329. home_stats[possession] +=1
330. home_score += 1
331. print("".join(timelist)," AND IT GETS PAST THE KEEPER!",home_roster[possession],"scores! The score is now","-".join([str(away_score),str(home_score)]))
332. time -= weightedround(random.gauss(60,10))
333. else:
334. result = False
335. print("And the keeper grabs it!")
336.
337. elif offense == "Away":
338. home_stats +=1
339. shot_roll = random.randint(0,20)+weightedround(random.gauss(away_roster[possession],0.25))
340. keeper_roll = max(random.randint(0,30),weightedround(random.gauss(home_roster,0.25)))+weightedround(random.gauss(home_roster,0.25))
341. if shot_roll > keeper_roll:
342. result = True
343. home_stats +=1
344. away_stats[possession] +=1
345. away_score += 1
346. print("".join(timelist)," AND IT GETS PAST THE KEEPER!",away_roster[possession],"scores! The score is now","-".join([str(away_score),str(home_score)]))
347. time -= weightedround(random.gauss(60,10))
348. else:
349. result = False
350. print("And the keeper grabs it!")
351. print("shot:",shot_roll,"keep:",keeper_roll)
352. return result
353.
354. #Determining who's guarding who
355. def marking():
356. global possession
357. global offense
358. global marking_off
359. global marking_def
360. global depth
361. global time
362. away_att2 = away_att[:]
363. away_mid2 = away_mid[:]
364. away_def2 = away_def[:]
365. home_att2 = home_att[:]
366. home_mid2 = home_mid[:]
367. home_def2 = home_def[:]
368. marking_off = []
369. marking_def = []
370. if offense == "Home":
371. i = 0
372. while i < len(home_att2):
373. q = home_att2[i]
374. t = 0
375. while t < len(home_roster):
376. y = home_roster[t]
377. if y == q:
378. r = t
379. t += 1
380. else:
381. t += 1
382. marking_off.append(r)
383. try:
384. z = random.choice(away_def2)
385. away_def2.remove(z)
386. except:
387. z = random.choice(away_mid2)
388. away_mid2.remove(z)
389. t = 0
390. while t < len(away_roster):
391. y = away_roster[t]
392. if y == z:
393. s = t
394. t += 1
395. else:
396. t += 1
397. marking_def.append(s)
398. i += 1
399. i = 0
400. while i < len(home_mid2):
401. q = home_mid2[i]
402. t = 0
403. while t < len(home_roster):
404. y = home_roster[t]
405. if y == q:
406. r = t
407. t += 1
408. else:
409. t += 1
410. marking_off.append(r)
411. try:
412. try:
413. z = random.choice(away_def2)
414. away_def2.remove(z)
415. except:
416. z = random.choice(away_mid2)
417. away_mid2.remove(z)
418. except:
419. z = random.choice(away_att2)
420. away_att2.remove(z)
421. t = 0
422. while t < len(away_roster):
423. y = away_roster[t]
424. if y == z:
425. s = t
426. t += 1
427. else:
428. t += 1
429. marking_def.append(s)
430. i += 1
431. i = 0
432. while i < len(home_def2):
433. q = home_def2[i]
434. t = 0
435. while t < len(home_roster):
436. y = home_roster[t]
437. if y == q:
438. r = t
439. t += 1
440. else:
441. t += 1
442. marking_off.append(r)
443. try:
444. z = random.choice(away_mid2)
445. away_mid2.remove(z)
446. except:
447. z = random.choice(away_att2)
448. away_att2.remove(z)
449. t = 0
450. while t < len(away_roster):
451. y = away_roster[t]
452. if y == z:
453. s = t
454. t += 1
455. else:
456. t += 1
457. marking_def.append(s)
458. i += 1
459. elif offense == "Away":
460. i = 0
461. while i < len(away_att2):
462. q = away_att2[i]
463. t = 0
464. while t < len(away_roster):
465. y = away_roster[t]
466. if y == q:
467. r = t
468. t += 1
469. else:
470. t += 1
471. marking_off.append(r)
472. try:
473. z = random.choice(home_def2)
474. home_def2.remove(z)
475. except:
476. z = random.choice(away_mid2)
477. home_mid2.remove(z)
478. t = 0
479. while t < len(home_roster):
480. y = home_roster[t]
481. if y == z:
482. s = t
483. t += 1
484. else:
485. t += 1
486. marking_def.append(s)
487. i += 1
488. i = 0
489. while i < len(away_mid2):
490. q = away_mid2[i]
491. t = 0
492. while t < len(away_roster):
493. y = away_roster[t]
494. if y == q:
495. r = t
496. t += 1
497. else:
498. t += 1
499. marking_off.append(r)
500. try:
501. try:
502. z = random.choice(home_def2)
503. home_def2.remove(z)
504. except:
505. z = random.choice(home_mid2)
506. home_mid2.remove(z)
507. except:
508. z = random.choice(home_att2)
509. home_att2.remove(z)
510. t = 0
511. while t < len(home_roster):
512. y = home_roster[t]
513. if y == z:
514. s = t
515. t += 1
516. else:
517. t += 1
518. marking_def.append(s)
519. i += 1
520. i = 0
521. while i < len(away_def2):
522. q = away_def2[i]
523. t = 0
524. while t < len(away_roster):
525. y = away_roster[t]
526. if y == q:
527. r = t
528. t += 1
529. else:
530. t += 1
531. marking_off.append(r)
532. try:
533. z = random.choice(home_mid2)
534. home_mid2.remove(z)
535. except:
536. z = random.choice(home_att2)
537. home_att2.remove(z)
538. t = 0
539. while t < len(home_roster):
540. y = home_roster[t]
541. if y == z:
542. s = t
543. t += 1
544. else:
545. t += 1
546. marking_def.append(s)
547. i += 1
548.
549. #dribble and tackle function
550. def dribble():
551. global possession
552. global offense
553. global depth
554. global marking_off
555. global marking_def
556. global time
557. z = marking_off.index(possession)
558. y = marking_def[z]
559. time -= weightedround(random.gauss(5,1.5))
560. if offense == "Home":
561. away_stats[y] += 1
562. dribble_roll = random.randint(10,20)+weightedround(random.gauss(home_roster[possession],0.25))
563. keeper_roll = random.randint(0,20)+weightedround(random.gauss(away_roster[y],0.25))
564. if dribble_roll >= keeper_roll:
565. result = True
566. else:
567. print(away_roster[y],"on the tackle and steals the ball from",home_roster[possession])
568. result = False
569. away_stats[y] +=1
570. offense = "Away"
571. possession = y
572. elif offense == "Away":
573. home_stats[y] += 1
574. dribble_roll = random.randint(10,20)+weightedround(random.gauss(away_roster[possession],0.25))
575. keeper_roll = random.randint(0,20)+weightedround(random.gauss(home_roster[y],0.25))
576. if dribble_roll >= keeper_roll:
577. result = True
578. else:
579. print(home_roster[y],"on the tackle and steals the ball from",away_roster[possession])
580. result = False
581. home_stats[y] +=1
582. offense = "Home"
583. possession = y
584. return result
585.
586. #passing
587. def passattempt():
588. global possession
589. global offense
590. global depth
591. global marking_off
592. global marking_def
593. global time
594. time -= weightedround(random.gauss(8,1.5))
595. if depth == 3:
596. x = random.choice([3,3,2,2])
597. depth = x
598. elif depth == 2:
599. x = random.choice([3,2,2,2,1,1])
600. depth = x
601. elif depth == 1:
602. x = random.choice([2,2,1,1])
603. depth = x
604. if offense == "Home":
605. home_stats[possession] += 1
606. if depth == 3:
607. q = random.choice(home_def)
608. elif depth == 2:
609. q = random.choice(home_mid)
610. elif depth == 1:
611. q = random.choice(home_att)
612. i = 0
613. while i < len(home_roster):
614. z = home_roster[i]
615. if z == q:
616. r = i
617. i += 1
618. else:
619. i += 1
620. z = marking_off.index(r)
621. y = marking_def[z]
622. pass_roll = random.randint(-10,10)+weightedround(random.gauss(home_roster[possession]-10,0.25))
623. off_roll = random.randint(10,20)+weightedround(random.gauss(home_roster[z],0.25))
624. marking_roll = random.randint(0,20)+weightedround(random.gauss(away_roster[y],0.25))
625. pass_score = pass_roll + off_roll - marking_roll
626. if pass_score < -20:
627. result = 1
628. elif -20 <= pass_score <= 0:
629. result = 2
630. away_stats[y] += 1
631. possession = y
632. offense = "Away"
633. elif 0 < pass_score < 20:
634. result = 3
635. home_stats[possession] += 1
636. possession = z
637. elif pass_score >= 20:
638. result = 4
639. home_stats[possession] += 1
640. possession = z
641. elif offense == "Away":
642. away_stats[possession] += 1
643. if depth == 3:
644. q = random.choice(away_def)
645. elif depth == 2:
646. q = random.choice(away_mid)
647. elif depth == 1:
648. q = random.choice(away_att)
649. i = 0
650. while i < len(away_roster):
651. z = away_roster[i]
652. if z == q:
653. r = i
654. i += 1
655. else:
656. i += 1
657. z = marking_off.index(r)
658. y = marking_def[z]
659. pass_roll = random.randint(-10,10)+weightedround(random.gauss(away_roster[possession]-10,0.25))
660. off_roll = random.randint(10,20)+weightedround(random.gauss(away_roster[z],0.25))
661. marking_roll = random.randint(0,20)+weightedround(random.gauss(home_roster[y],0.25))
662. pass_score = pass_roll + off_roll - marking_roll
663. if pass_score < -20:
664. result = 1
665. elif -20 <= pass_score <= 0:
666. result = 2
667. home_stats[y] += 1
668. possession = y
669. offense = "Home"
670. elif 0 < pass_score < 20:
671. result = 3
672. away_stats[possession] +=1
673. possession = z
674. elif pass_score >= 20:
675. result = 4
676. away_stats[possession] +=1
677. possession = z
678.
679. #change possession macro
680. def changepossession(x):
681. global possession
682. global offense
683. global depth
684. global time
685. if x == 1: ##Shots off target//Keeper catches
686. i = 0
687. if offense == "Away":
688. offense = "Home"
689. while i < len(home_roster):
690. x = home_roster[i]
691. if x == home_keep:
692. possession = i
693. keeper = i
694. i += 1
695. else:
696. i += 1
697. if "Distributor" in home_roster[keeper]:
698. distributor_bonus = 1
699. else:
700. distributor_bonus = 0
701. t = random.choice(home_keepdepth)
703. q = random.choice(home_def)
704. i = 0
705. while i < len(home_roster):
706. z = home_roster[i]
707. if z == q:
708. possession = i
709. i += 1
710. else:
711. i += 1
712. depth = 3
713. print("Keeper",home_roster[keeper],"rolls the ball to his defender",home_roster[possession])
715. z = random.randint(1+distributor_bonus,4)
716. if z > 2:
717. q = random.choice(home_mid)
718. i = 0
719. while i < len(home_roster):
720. z = home_roster[i]
721. if z == q:
722. possession = i
723. i += 1
724. else:
725. i += 1
726. depth = 2
727. print("Keeper",home_roster[keeper],"boots the ball into the midfield where it's collected by",home_roster[possession])
728. else:
729. q = random.choice(away_mid)
730. i = 0
731. while i < len(away_roster):
732. z = away_roster[i]
733. if z == q:
734. possession = i
735. i += 1
736. else:
737. i += 1
738. depth = 2
739. offense = "Away"
740. print("Keeper",home_roster[keeper],"boots the ball into the midfield, but it's stolen by",away_roster[possession])
741. elif t == 1: #push on the attack
742. z = random.randint(1+distributor_bonus,4)
743. if z == 4:
744. q = random.choice(home_att)
745. i = 0
746. while i < len(home_roster):
747. z = home_roster[i]
748. if z == q:
749. possession = i
750. i += 1
751. else:
752. i += 1
753. depth = 1
754. print("Keeper",home_roster[keeper],"pushes the ball deep into the attack and it connects to",home_roster[possession])
755. else:
756. q = random.choice(away_def)
757. i = 0
758. while i < len(away_roster):
759. z = away_roster[i]
760. if z == q:
761. possession = i
762. i += 1
763. else:
764. i += 1
765. depth = 3
766. offense = "Away"
767. print("Keeper",home_roster[keeper],"launches the ball over his teammates where it's easily collected by",away_roster[possession])
768. elif offense == "Home":
769. offense = "Away"
770. while i < len(away_roster):
771. x = away_roster[i]
772. if x == away_keep:
773. possession = i
774. keeper = i
775. i += 1
776. else:
777. i += 1
778. if "Distributor" in away_roster[keeper]:
779. distributor_bonus = 1
780. else:
781. distributor_bonus = 0
782. t = random.choice(away_keepdepth)
784. q = random.choice(away_def)
785. i = 0
786. while i < len(away_roster):
787. z = away_roster[i]
788. if z == q:
789. possession = i
790. i += 1
791. else:
792. i += 1
793. depth = 3
794. print("Keeper",away_roster[keeper],"rolls the ball to his defender",away_roster[possession])
796. z = random.randint(1+distributor_bonus,4)
797. if z > 2:
798. q = random.choice(away_mid)
799. i = 0
800. while i < len(away_roster):
801. z = away_roster[i]
802. if z == q:
803. possession = i
804. i += 1
805. else:
806. i += 1
807. depth = 2
808. print("Keeper",away_roster[keeper],"boots the ball into the midfield where it's collected by",away_roster[possession])
809. else:
810. q = random.choice(home_mid)
811. i = 0
812. while i < len(home_roster):
813. z = home_roster[i]
814. if z == q:
815. possession = i
816. i += 1
817. else:
818. i += 1
819. depth = 2
820. offense = "Home"
821. print("Keeper",away_roster[keeper],"boots the ball into the midfield, but it's stolen by",home_roster[possession])
822. elif t == 1: #push on the attack
823. z = random.randint(1+distributor_bonus,4)
824. if z == 4:
825. q = random.choice(away_att)
826. i = 0
827. while i < len(away_roster):
828. z = away_roster[i]
829. if z == q:
830. possession = i
831. i += 1
832. else:
833. i += 1
834. depth = 1
835. print("Keeper",away_roster[keeper],"pushes the ball deep into the attack and it connects to",away_roster[possession])
836. else:
837. q = random.choice(home_def)
838. i = 0
839. while i < len(home_roster):
840. z = home_roster[i]
841. if z == q:
842. possession = i
843. i += 1
844. else:
845. i += 1
846. depth = 3
847. offense = "Home"
848. print("Keeper",away_roster[keeper],"launches the ball over his teammates where it's easily collected by",home_roster[possession])
849.
850. kickoff_flag = True
851. offense = "Away"
852. half = 0
853. game = True
854. while game == True:
855. while time > 0:
856. while kickoff_flag == True:
857. print("KICKOFF")
858. if offense == "Away":
859. kickoff("Away")
860. elif offense == "Home":
861. kickoff("Home")
862. kickoff_flag = False
863. time -= weightedround(random.gauss(10,2.5))
864. if takeshot(1) == True:
865. if ontarget() == True:
866. if offense == "Home":
867. print("Shot taken by",home_roster[possession]," and it's on target.")
868. z = goal()
869. if z == True:
870. kickoff_flag = True
871. offense = "Away"
872. continue
873. elif z == False:
874. changepossession(1)
875. continue
876. elif offense == "Away":
877. print("Shot taken by",away_roster[possession]," and it's on target.")
878. z = goal ()
879. if z == True:
880. kickoff_flag = True
881. offense = "Home"
882. continue
883. elif z == False:
884. changepossession(1)
885. continue
886. else:
887. if offense == "Home":
888. print("Shot taken by",home_roster[possession]," but it's off-target.")
889. changepossession(1)
890. elif offense == "Away":
891. print("Shot taken by",away_roster[possession]," but it's off-target.")
892. changepossession(1)
893. marking()
894. dribble()
895. zz = passattempt()
896. if zz == 1:
897. print("And the pass sails into the stands. That'll be the keeper's ball.")
898. changepossession(1)
899. elif zz == 4:
900. if takeshot(3) == True:
901. if ontarget() == True:
902. if offense == "Home":
903. print("Shot taken by",home_roster[possession]," and it's on target.")
904. z = goal()
905. if z == True:
906. kickoff_flag = True
907. offense = "Away"
908. continue
909. elif z == False:
910. changepossession(1)
911. continue
912. elif offense == "Away":
913. print("Shot taken by",away_roster[possession]," and it's on target.")
914. z = goal ()
915. if z == True:
916. kickoff_flag = True
917. offense = "Home"
918. continue
919. elif z == False:
920. changepossession(1)
921. continue
922. else:
923. if offense == "Home":
924. print("Shot taken by",home_roster[possession]," but it's off-target.")
925. changepossession(1)
926. elif offense == "Away":
927. print("Shot taken by",away_roster[possession]," but it's off-target.")
928. changepossession(1)
929.
930. else:
931. if half == 0:
932. print("And that's half time! The score is","-".join([str(away_score),str(home_score)]))
933. half = 1
934. extra_time = round(max(random.gauss(150,45),0))
935. time = 1800 + extra_time
936. print("The second half will be 30 minutes and feature",extra_time // 60,"minutes and",extra_time % 60,"seconds of extra time")
937. kickoff_flag = True
938. offense = "Home"
939. continue
940. elif half == 1:
941. game = False
942. else:
943. print("And that's the end of the game! The final score is","-".join([str(away_score),str(home_score)]))
944.
945. filename ="gamedata.csv"
946. with open(filename, "w") as output:
947. writer = csv.writer(output, lineterminator="\n")
948. writer.writerows([["Index"]+["Position"]+["Name"]+["GA"]+["GT"]+["GM"]+["PA"]+["PM"]+["TA"]+["TM"]+["INT"]+["SAg"]+["SAl"]])
949. writer.writerows(away_stats)
950. writer.writerows(home_stats)
951.
952. example output:
953. [[1, 'ST', 'Striker 1', '[]', 2.07, 2.39, 2.56, 2.03, 2.05, 8.16, 10.04, 10.34, 8.09, 11.92, 7.87, 14], [2, 'ST', 'Striker 2', '[]', 1.8, 1.66, 2.18, 1.89, 1.82, 8.31, 10.61, 11.13, 10.24, 12.02, 8.44, 14], [3, 'MF', 'Fielder 1', '[]', 2.34, 2.08, 1.8, 6.68, 6.08, 10.33, 10.08, 8.47, 13.82, 10.15, 8.28, 10], [4, 'MF', 'Fielder 2', '[]', 1.76, 2.24, 1.9, 6.25, 6.57, 10.03, 9.49, 8.67, 10.01, 10.49, 7.92, 10], [5, 'MF', 'Fielder 3', '[]', 2.06, 2.11, 2.09, 6.2, 6.58, 10.56, 9.45, 8.81, 10.02, 9.99, 7.72, 10], [6, 'DB', 'Back 1', '[]', 2.34, 1.98, 1.73, 10.06, 10.11, 7.18, 8.04, 6.05, 7.05, 6.04, 4.34, 5], [7, 'DB', 'Back 2', '[]', 2.07, 1.89, 1.98, 9.98, 10.24, 6.31, 8.49, 6.55, 7.25, 5.79, 3.95, 5], [8, 'DB', 'Back 3', '[]', 1.81, 1.7, 2.13, 10.37, 10.22, 6.27, 8.6, 6.12, 6.97, 5.98, 3.88, 5], [9, 'GK', 'Keeper 1', '[]', 10.16, 10.68, 10.63, 4.04, 3.37, 4.19, 3.64, 3.7, 4.2, 4.11, 4.33, 4]]
954. [[10, 'ST', 'Striker A', '[]', 1.31, 2.22, 1.75, 0.96, 1.18, 7.76, 10.66, 10.28, 10.02, 8.62, 8.78, 16], [11, 'ST', 'Striker B', '[]', 1.97, 1.63, 1.83, 1.36, 1.03, 7.66, 11.04, 10.2, 9.72, 11.23, 9.16, 11], [12, 'ST', 'Striker C', '[]', 1.88, 1.99, 2.0, 0.81, 1.25, 7.71, 10.73, 10.28, 8.15, 14.18, 8.68, 14], [13, 'MF', 'Fielder A', '[]', 2.62, 1.83, 1.64, 5.62, 5.98, 9.2, 9.2, 7.19, 9.33, 3.14, 8.28, 8], [14, 'MF', 'Fielder C', '[]', 2.01, 1.74, 2.04, 5.35, 5.3, 8.62, 9.12, 7.63, 8.41, 2.97, 8.67, 8], [15, 'DB', 'Back A', '[]', 2.3, 1.82, 2.47, 10.05, 9.4, 5.54, 7.12, 4.72, 7.82, 2.7, 8.04, 3], [16, 'DB', 'Back B', '[]', 1.85, 1.81, 1.88, 9.47, 8.49, 5.8, 7.94, 5.74, 8.22, 3.07, 7.86, 3], [17, 'DB', 'Back C', '[]', 2.12, 2.08, 2.38, 9.28, 9.14, 5.34, 7.77, 5.74, 7.82, 3.78, 8.08, 3], [18, 'GK', 'Keeper A', '[‘Distributor’]', 8.81, 8.46, 9.3, 3.75, 3.58, 3.85, 4.17, 4.01, 3.83, 4.3, 4.11, 4]]
955. The first half will be 30 minutes and feature 2 minutes and 7 seconds of extra time
956. KICKOFF
957. 30:00 And there's the kickoff, with Fielder 1 takes possession
958. 22 8
959. Shot taken by Striker C but it's off-target.
960. Keeper Keeper 1 boots the ball into the midfield where it's collected by Fielder 2
961. 38 8
962. Shot taken by Fielder 1 but it's off-target.
963. Keeper Keeper A launches the ball over his teammates where it's easily collected by Back 2
964. 27 9
965. Shot taken by Fielder C but it's off-target.
966. Keeper Keeper 1 rolls the ball to his defender Back 2
967. 8 9
968. Shot taken by Fielder C and it's on target.
969. And the keeper grabs it!
970. shot: 3 keep: 36
971. Keeper Keeper 1 boots the ball into the midfield where it's collected by Fielder 2
972. 10 4
973. Shot taken by Back 3 but it's off-target.
974. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder A
975. 5 8
976. Shot taken by Fielder 1 and it's on target.
977. And the keeper grabs it!
978. shot: 12 keep: 37
979. Keeper Keeper A pushes the ball deep into the attack and it connects to Striker A
980. 18 9
981. Shot taken by Striker A but it's off-target.
982. Keeper Keeper 1 rolls the ball to his defender Back 3
983. 17 9
984. Shot taken by Fielder 1 but it's off-target.
985. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder C
986. Fielder 1 on the tackle and steals the ball from Fielder C
987. 22 9
988. Shot taken by Fielder C but it's off-target.
989. Keeper Keeper 1 rolls the ball to his defender Back 3
990. Striker A on the tackle and steals the ball from Back 3
991. 52 4
992. Shot taken by Back 3 but it's off-target.
993. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder A
994. 4 9
995. Shot taken by Fielder 1 and it's on target.
996. And the keeper grabs it!
997. shot: 15 keep: 29
998. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder C
999. 42 7
1000. Shot taken by Fielder 3 but it's off-target.
1001. Keeper Keeper A boots the ball into the midfield, but it's stolen by Fielder 1
1002. And that's half time! The score is 0-0
1003. The second half will be 30 minutes and feature 3 minutes and 36 seconds of extra time
1004. KICKOFF
1005. 30:00 And there's the kickoff, with Fielder A takes possession
1006. 18 8
1007. Shot taken by Fielder A but it's off-target.
1008. Keeper Keeper 1 rolls the ball to his defender Back 3
1009. 7 8
1010. Shot taken by Fielder 2 and it's on target.
1011. And the keeper grabs it!
1012. shot: 28 keep: 31
1013. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder A
1014. 8 8
1015. Shot taken by Fielder A and it's on target.
1016. And the keeper grabs it!
1017. shot: 16 keep: 22
1018. Keeper Keeper 1 rolls the ball to his defender Back 1
1019. 14 4
1020. Shot taken by Back 1 but it's off-target.
1021. Keeper Keeper A launches the ball over his teammates where it's easily collected by Back 3
1022. 33 4
1023. Shot taken by Back 1 but it's off-target.
1024. Keeper Keeper A pushes the ball deep into the attack and it connects to Striker C
1025. Fielder A on the tackle and steals the ball from Fielder 2
1026. 2 8
1027. Shot taken by Fielder 1 and it's on target.
1028. And the keeper grabs it!
1029. shot: 17 keep: 22
1030. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder A
1031. 21 8
1032. Shot taken by Fielder A but it's off-target.
1033. Keeper Keeper 1 boots the ball into the midfield, but it's stolen by Fielder A
1034. 23 9
1035. Shot taken by Striker C but it's off-target.
1036. Keeper Keeper 1 rolls the ball to his defender Back 1
1037. Back A on the tackle and steals the ball from Striker 2
1038. 33 8
1039. Shot taken by Fielder 3 but it's off-target.
1040. Keeper Keeper A boots the ball into the midfield, but it's stolen by Fielder 3
1041. 22 8
1042. Shot taken by Fielder A but it's off-target.
1043. Keeper Keeper 1 rolls the ball to his defender Back 3
1044. 43 9
1045. Shot taken by Fielder C but it's off-target.
1046. Keeper Keeper 1 rolls the ball to his defender Back 1
1047. 16 8
1048. Shot taken by Fielder 1 but it's off-target.
1049. Keeper Keeper A pushes the ball deep into the attack and it connects to Striker A
1050. 7 8
1051. Shot taken by Fielder 2 and it's on target.
1052. 7:31 AND IT GETS PAST THE KEEPER! Fielder 2 scores! The score is now 1-0
1053. shot: 30 keep: 23
1054. KICKOFF
1055. 6:29 And there's the kickoff, with Fielder A takes possession
1056. 40 8
1057. Shot taken by Fielder A but it's off-target.
1058. Keeper Keeper 1 boots the ball into the midfield where it's collected by Fielder 2
1059. 18 7
1060. Shot taken by Fielder 3 but it's off-target.
1061. Keeper Keeper A boots the ball into the midfield, but it's stolen by Fielder 3
1062. 4 4
1063. Shot taken by Back 3 and it's on target.
1064. And the keeper grabs it!
1065. shot: 9 keep: 25
1066. Keeper Keeper A boots the ball into the midfield where it's collected by Fielder C
1067. 39 8
1068. Shot taken by Fielder C but it's off-target.
1069. Keeper Keeper 1 rolls the ball to his defender Back 1
1070. 51 9
1071. Shot taken by Striker B but it's off-target.
1072. Keeper Keeper 1 boots the ball into the midfield where it's collected by Fielder 1
1073. 17 8
1074. Shot taken by Striker 2 but it's off-target.
1075. Keeper Keeper A pushes the ball deep into the attack and it connects to Striker A
1076. 35 8
1077. Shot taken by Fielder 3 but it's off-target.
1078. Keeper Keeper A pushes the ball deep into the attack and it connects to Striker C
1079. And that's the end of the game! The final score is 1-0
1080. >>>
RAW Paste Data