python开发日志2[局域网石头剪刀布]完整代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python开发日志2[局域网石头剪刀布]完整代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4300字,纯文字阅读大概需要7分钟。
内容图文
![python开发日志2[局域网石头剪刀布]完整代码](/upload/InfoBanner/zyjiaocheng/851/8117f3c0865d460f8045b02364473da8.jpg)
局域网石头剪刀布
心力憔悴。。。
写了2个半小时。
也就6kb
感觉这种东西不适合OIer
交给普通的程序员估计一个小时够了。
我居然编写+调试花了2个半小时。。
平常10kb的c++代码我只需要一个小时多
python这种精简的语言。。
其实还好是python,如果用c++写的话
6kb的代码就估计需要30kb了。。
python : c++ = 1 : 5
- 我打算exe打包公开上来,但是好像在32位兼容问题上出了点问题。过一段时间再发
- 源代码公开如下(如果自己用直接拷走,如果要转发请注明出处,谢谢!)
服务器
#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("========分割线========")
内容总结
以上是互联网集市为您收集整理的python开发日志2[局域网石头剪刀布]完整代码全部内容,希望文章能够帮你解决python开发日志2[局域网石头剪刀布]完整代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。