-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplayers.py
108 lines (87 loc) · 2.58 KB
/
players.py
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
#!/usr/bin/python
import sqlite3 as sql
class player:
def __init__(self,uid=-1):
self._id = uid
if uid==-1:
self._name = ""
self._average = 0
self._games_played = 0
self._over_60 = 0
self._over_100 = 0
self._win_frac = 0
else:
self.import_data()
def set_id(self,uid):
self._id = uid
def get_id(self):
return self._id
def import_data(self):
# open db connection
con = sql.connect('darts.db')
cur = con.cursor()
# get name
cur.execute("SELECT Name FROM Players WHERE Id=?",(self._id,))
data = cur.fetchone()
self._name = data[0]
# compute average
cur.execute("SELECT Score FROM GameScores WHERE PlayerID=?",(self._id,))
data = cur.fetchall()
if len(data)==0:
self._average = 0
else:
total = 0
for pt in data:
total += pt[0]
self._average = float(total)/len(data)
# get games played
cur.execute("SELECT GameId FROM GamePlayers WHERE PlayerID=?",(self._id,))
data = cur.fetchall()
self._games_played = len(data)
# compute fraction over XX
cur.execute("SELECT Score FROM GameScores WHERE PlayerID=?",(self._id,))
data = cur.fetchall()
if len(data)==0:
self._over_60 = 0
self._over_100 = 0
else:
num60 = 0
num100 = 0
for pt in data:
if pt[0]>=60:
num60 += 1
if pt[0]>=100:
num100 +=1
self._over_60 = float(num60)/len(data)
self._over_100 = float(num100)/len(data)
# compute win fraction
cur.execute("SELECT Id FROM Games WHERE WinnerID=?",(self._id,))
data = cur.fetchall()
if (self._games_played == 0):
self._win_frac = 0
else:
self._win_frac = float(len(data))/self._games_played
# close connection
con.close()
def export_data(self):
con = sql.connect('darts.db')
with con:
cur = con.cursor()
cur.execute("INSERT INTO Players(Name) VALUES(?)",(self._name,))
cur.execute("SELECT Id FROM Players ORDER BY Id DESC LIMIT 1")
player_id = cur.fetchone()[0]
self._id = player_id
con.close()
def get_average(self):
return self._average
def set_name(self,name):
self._name = name
def get_name(self):
return self._name
def display_player_info(self):
print self._name
print " Games played: ", self._games_played
print " Win fraction: ", self._win_frac
print " Average: ", self._average
print " Fraction over 60: ", self._over_60
print " Fraction over 100: ", self._over_100