python开发日志2[局域网石头剪刀布]完整代码

局域网石头剪刀布


心力憔悴。。。
写了2个半小时。
也就6kb
感觉这种东西不适合OIer
交给普通的程序员估计一个小时够了。
我居然编写+调试花了2个半小时。。
平常10kb的c++代码我只需要一个小时多
python这种精简的语言。。
其实还好是python,如果用c++写的话
6kb的代码就估计需要30kb了。。
python : c++ = 1 : 5

  1. 我打算exe打包公开上来,但是好像在32位兼容问题上出了点问题。过一段时间再发
  2. 源代码公开如下(如果自己用直接拷走,如果要转发请注明出处,谢谢!)

服务器

#MuYun编写自2018.10.17
#RPS server(居然写了我一个半小时)
import threading
import socket
import time
import os
from time import sleep
from os import system

flag= [0,0]
rps = [0,0]
seve = []
game = []
gamer = []


class thread1(threading.Thread):
    def __init__(self, addr, nub):
        threading.Thread.__init__(self)
        self.addr = addr
        self.nub = nub
    def run(self):
        Re = socket.socket()
        ports = 12344
        #print(self.addr[0])
        Re.connect((self.addr[0],ports))
        name=(Re.recv(1024)).decode()
        game.append(name)
        seve[self.nub].send((name).encode())
        while 1:
            while flag[self.nub]:
                pass
            recd=(Re.recv(1024)).decode()
            rps[self.nub]=int(recd[0])
            flag[self.nub]=1
            seve[self.nub].send(("OK").encode())
        



print("loading...")

s = socket.socket()         # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
ip = socket.gethostbyname(host)
port = 12345                # 设置端口
s.bind((ip, port))        # 绑定端口
system("cls")
print("MuYun_RPS server version 1.0")
print("初始化完成!服务器的IP地址为",ip,"。")
print("正在等待客户端连接...")

s.listen(2) #最大连接数
for i in [0,1]:
    c,addr = s.accept()
    seve.append(c)
    print("被连接-->来自",addr)
    gamer.append(addr)
    print("正在建立稳定的对话..")
    player=thread1(addr,i)
    player.start()
    print("第",i+1,"个玩家就绪")
sleep(0.5)
seve[0].send("start".encode())
seve[1].send("srart".encode())
system("cls")
print("服务器ip为",ip,"游戏即将开始")
print("玩家1 ip:",gamer[0]," name:",game[0])
print("玩家2 ip:",gamer[1]," name:",game[1])
print("等待玩家决策...")
t=0
while 1:
    if (flag[0])and(flag[1]):
        if(rps[0]==rps[1]):
            t=t+1
            print("第",t,"场平局,玩家一:",rps[0],"玩家2:",rps[1])
            print("等待玩家决策...")
            flag[0]=0
            flag[1]=0
            seve[0].send(("0"+str(rps[1])+str(t)+game[1]).encode())
            seve[1].send(("0"+str(rps[0])+str(t)+game[0]).encode())
            continue
        if(rps[0]==1 and rps[1]==2 or rps[0]==2 and rps[1]==3 or rps[0]==3 and rps[1]==1):
            t=t+1
            print("第",t,"场玩家一获胜,玩家一:",rps[0],"玩家2:",rps[1])
            print("等待玩家决策...")
            flag[0]=0
            flag[1]=0
            seve[0].send(("1"+str(rps[1])+str(t)+game[1]).encode())
            seve[1].send(("2"+str(rps[0])+str(t)+game[0]).encode())
            continue
        t=t+1
        print("第",t,"场玩家二获胜,玩家一:",rps[0],"玩家2:",rps[1])
        print("等待玩家决策...")
        flag[0]=0
        flag[1]=0
        seve[0].send(("2"+str(rps[1])+str(t)+game[1]).encode())
        seve[1].send(("1"+str(rps[0])+str(t)+game[0]).encode())
        continue



客户端

#MuYun编写自2018.10.17
#RPS client 居然写了40分钟。。。
import threading
import socket
import time
import os
from time import sleep
from os import system

rps = [0,"石头","剪刀","布"]

print("MuYun_RPS client version 1.0")
sends = socket.socket()
recvs = socket.socket()
name = input("请输入你的名字:")
servip = input("请输入要连接的服务器ip:")
servport = 12345
host = socket.gethostname() # 获取本地主机名
ip = socket.gethostbyname(host)
port = 12344
print("连接中...")
sends.bind((ip,port))
sends.listen(2)
recvs.connect((servip,servport))
dd,addr = sends.accept()
dd.send((name).encode())
reply = (recvs.recv(1024)).decode()
print("服务器回话:",reply)
if(reply!=name):
    print("服务器回话不正确!!!")
    system("pause")
    exit()
print("连接成功!!!")
print("正在等待另一个玩家...")
reply = (recvs.recv(1024)).decode()
system("cls")
print("游戏开始!!")
while 1:
    decision=input("请君决策(1.石头,2.剪刀,3布):")
    while int(decision[0]) not in [1,2,3]:
        print("错误的决策!!!")
        decision=input("请决策(1.石头,2.剪刀,3布):")
    dd.send((decision).encode())
    print("正在发送至服务器...")
    reply = (recvs.recv(1024)).decode()
    while reply!="OK":
        reply = (recvs.recv(1024)).decode()
    print("服务器已接收!")
    print("正在等待对方决策或者服务器延迟...")
    result = (recvs.recv(1024)).decode()
    print("对方(",result[3:],")出了 ",rps[int(result[1])],"  。")
    print("你(",name,")出了 ",rps[int(decision[0])]," 。")
    print("这是第 ",result[2]," 场游戏。")
    if(result[0]=="0"):
        print("平局!!!再来一次吧!")
    if(result[0]=="1"):
        print("你赢了!!继续碾压他!")
    if(result[0]=="2"):
        print("你败了!没事,让让他!")
    print("========分割线========")
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值