-
Notifications
You must be signed in to change notification settings - Fork 14
/
server.py
85 lines (78 loc) · 3.18 KB
/
server.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
import diler
import cards
import network
import socket
import os
import time
class Game:
def __init__(self):
self.diler = diler.Diler(self)
self.logins = {}
self.money = 10000
self.clients = [] #[(conn, addr)]
self.server = network.Server()
try:
self.f = open('file.txt', 'a')
except IOError as e:
print('Файла с логинами не существует!')
print('Создаю новый файл')
self.f = open('file.txt', 'w+')
self.main()
def main(self):
ans = ''
while ans != 'q':
print('a - установить соединение с новым клиентом')
print('s - начать игру')
print('q - quit')
ans = input('Введите команду(a/w/s/q): ')
if ans == 'a':
try:
self.accept()
except socket.timeout:
print('Клиент не отвечает')
continue
elif ans == 's':
self.diler.game()
elif ans == 'q':
print('By!')
self.f = open('file.txt', 'w')
for log, mon in self.logins.items():
self.f.write(log + '.' + str(mon) + '\n')
self.f.close()
exit(0)
else:
print('Команда не распознана')
def fromFiletoDict(self, File):
for line in open(File.name):
if os.stat("file").st_size == 0:
break
self.logins[line[:line.index('.')]] = line[line.index('.')+1:]
def accept(self):
self.money = 10000
self.clients.append(self.server.accept())
print('Установлена связь с клиентом', self.clients[-1][1][1])
self.send((self.clients[-1][0]), 'Введите ваш логин:')
s = self.recv(self.clients[-1][0])
print('Clients Login = ' + s)
try: #проверяем сущесвтование файла
self.f = open('file.txt')
self.fromFiletoDict(self.f)
if not(s in self.logins.keys()):
self.send(self.clients[-1][0], 'Добро пожаловать, новый игрок')
self.logins[s] = self.money #10000 - изначальное кол-во денег
else:
self.money = int(self.logins[s])
self.send(self.clients[-1][0], 'Добро пожаловать ' + s)
except FileNotFoundError as e:
if not(s in self.logins):
self.send(self.clients[-1][0], 'Добро пожаловать, новый игрок')
self.logins[s] = self.money #10000 - изначальное кол-во денег
time.sleep(0.01)
self.send(self.clients[-1][0], str(self.money))
self.recv(self.clients[-1][0])
self.send((self.clients[-1][0]), str(self.clients[-1][1][1]))
def send(self, conn, msg):
self.server.send(conn, msg)
def recv(self, conn):
return self.server.recv(conn)
game = Game()