-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathserver.py
105 lines (87 loc) · 2.7 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import socket
from _thread import *
import pickle
import pygame
import sys
from grid import Grid
from player import *
player_count = 0
max_player = 2
cells = 0
grid_size = 8
direct_run = False
game_start = False
p = -1
def server_run(sound_option):
global player_count, game_start, p
hostname = socket.gethostname()
ipaddress = socket.gethostbyname(hostname)
server = ipaddress
port = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((server, port))
except socket.error as e:
print(e)
s.listen()
global playerindex, x, y, played, p
playerindex = x = y = -1
clock = pygame.time.Clock()
players = []
def host_initialize():
global cells
for i in range(0, max_player + 1):
players.append(Player(i, colors[i]))
cells = Grid(grid_size, players, max_player + 1, sound_option)
def threaded_client(conn):
global playerindex, x, y, player_count, max_player, cells, grid_size, p
run = True
isHost = pickle.loads(conn.recv(2048))
if direct_run == True:
isHost[1] = True
isHost.append(max_player)
isHost.append(grid_size)
if isHost[1]:
max_player = isHost[2]
grid_size = isHost[3]
host_initialize()
conn.sendall(pickle.dumps([cells, player_count]))
if isHost[0]:
player_count -= 1
conn.close()
sys.exit()
cord_list = []
first_time = True
while run:
print("Player_count", player_count, "max_player", max_player)
try:
Tx, Ty, TI = pickle.loads(conn.recv(2048))
if first_time:
cord_list.insert(0, [Tx, Ty, TI])
else:
cord_list.insert(0, [Tx, Ty, TI])
if len(cord_list) > 2:
cord_list.pop()
if not first_time:
if cord_list[0] != cord_list[1]:
x = Tx
y = Ty
p = TI
first_time = False
if player_count != max_player:
game_start = False
else:
game_start = True
conn.sendall(pickle.dumps([x, y, game_start, p]))
except socket.error as e:
print("disconnected")
run = False
player_count -= 1
conn.close()
sys.exit()
print("Server is online")
while True:
conn, addr = s.accept()
print("connected to: ", addr)
player_count += 1
start_new_thread(threaded_client, (conn,))