用户:
淳朴的蓝甲虫8-_J查看:4 回复:10 评论:4 创建时间:2020-07-02T20:28:49
技术喵from game import *
from tkinter import Tk
from tkinter.simpledialog import askinteger, askfloat, askstring
from tkinter.filedialog import askopenfilename, askopenfilenames, asksaveasfilename, askdirectory
from tkinter.messagebox import showinfo, showwarning, showerror
import socket
import threading
import sys
def recv(s):
while 1:
msg = s.recv(1024).decode()
c = msg.split()
print(msg)
if c[0] == 'P':
if cli.now == BLACK and cli.board[int(c[2])][int(c[1])]==BLANK:
cli.board[int(c[2])][int(c[1])]=BLACK
cli.now = WHITE
cli.pre = [int(c[2]),int(c[1])]
cli.s.send("R {} {}".format(c[1],c[2]).encode())
cli.status=cli.result()
if msg == "restart":
cli.restart()
class Client(Game):
def __init__(self):
app = Tk() # 初始化GUI程序
app.withdraw()
super().__init__()
self.s = socket.socket() # 创建T喵/IP套接字
ip = askstring(title="请输入ip",prompt="IP")
while ip is None or not ip:
ip = "192.168.3.8"
port = askstring(title="请输入端口", prompt="端口")
if port is None or not port:
port = 12345
else:
try:
port = int(port)
except:
port = 12345
print(ip,port)
self.s.connect((ip, port)) # 主动初始化T喵服务器连接
self.t = threading.Thread(target=recv,args=(self.s,))
self.t.start()
app.destroy()
def play(self):
while True:
for e in pygame.event.get():
if e.type == QUIT:
self.s.close()
exit()
if e.type == KEYDOWN:
if e.key == K_ESCAPE:
self.s.close()
exit()
self.show()
p1, p2 = pygame.mouse.get_pos()
p1 = (p1-16)//32
p2 = (p2-16)//32
if 0<=p1<=14 and 0<=p2<=14 and self.status == PLAYING:
self.end = time.time()
# pygame.draw.circle(self.screen, (255, 0,0), (p1 * 32 + 32, p2 * 32 + 32), 9)
# pygame.draw.rect(self.screen, (255,0,0), (p1 * 32+16, p2 * 32+16, 32, 32), 2)
if self.now == WHITE:
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16, p2 * 32+16),(p1 * 32+16+10, p2 * 32+16),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16+22, p2 * 32+16),(p1 * 32+16+22+10, p2 * 32+16),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16, p2 * 32+16+32),(p1 * 32+16+10, p2 * 32+16+32),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16+22, p2 * 32+16+32),(p1 * 32+16+22+10, p2 * 32+16+32),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16, p2 * 32+16),(p1 * 32+16, p2 * 32+16+10),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16, p2 * 32+16+22),(p1 * 32+16, p2 * 32+16+22+10),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16+32, p2 * 32+16),(p1 * 32+16+32, p2 * 32+16+10),2)
pygame.draw.line(self.screen,(255,0,0),(p1 * 32+16+32, p2 * 32+16+22),(p1 * 32+16+32, p2 * 32+16+22+10),2)
if pygame.mouse.get_pressed()[0] and self.board[p2][p1] == BLANK and self.now == WHITE:
self.board[p2][p1] = WHITE
self.pre = [p2,p1]
self.now = BLACK
self.s.send("P {} {}".format(p1,p2).encode())
r=self.result()
self.status = r
t0 = self.chn.render("你是 白 棋", True, (0, 0, 0))
t1 = self.chn.render("当前是 "+("黑"if self.now == BLACK else "白")+" 的回合", True, (0, 0, 0))
t2 = self.chn.render("当前状态:"+trans(self.status), True, (0, 0, 0))
t3 = self.chn.render("本局时间:{}".format(getstr(self.end-self.start)), True, (0, 0, 0))
t4 = self.chn.render("" if self.status==PLAYING else "", True, (0, 0, 0))
if 0<=p1<=14 and 0<=p2<=14 and self.status == PLAYING:
t4 = self.chn.render("目前选中:({},{})".format(p1+1,ROWS-p2), True, (0, 0, 0))
self.screen.blit(t0, (32 * 15+15, 160))
self.screen.blit(t1,(32*15+15,200))
self.screen.blit(t2, (32 * 15+15, 240))
self.screen.blit(t3, (32 * 15+15, 280))
self.screen.blit(t4, (32 * 15+15, 320))
pygame.display.update()
if __name__ == "__main__":
cli = Client()
cli.play()点赞1
评论