生成代码,使用Linux中的套接字机制,完成“石头、剪子、布”的游戏,使之能够在网络上运行该游戏。
时间: 2024-05-07 18:16:39 浏览: 103
好的,这是一个关于使用Linux中的套接字机制完成“石头、剪子、布”游戏的代码生成问题。以下是示例代码:
```python
import socket
import random
# 定义游戏结果
WIN = 0
LOSE = 1
TIE = 2
# 定义游戏手势
ROCK = 0
PAPER = 1
SCISSORS = 2
# 定义手势之间的胜负关系
rules = {
ROCK: [TIE, LOSE, WIN],
PAPER: [WIN, TIE, LOSE],
SCISSORS: [LOSE, WIN, TIE]
}
# 定义服务器地址和端口号
SERVER_ADDRESS = ('127.0.0.1', 8888)
# 创建套接字并绑定地址
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(SERVER_ADDRESS)
# 设置监听队列长度
sock.listen(1)
print('服务器已启动,等待客户端连接...')
while True:
# 接受客户端连接
conn, addr = sock.accept()
print('客户端已连接:', addr)
# 发送游戏规则
conn.sendall(b'游戏规则:石头剪刀布,0代表石头,1代表剪刀,2代表布\n')
while True:
# 接收客户端输入
data = conn.recv(1024)
if not data:
break
# 解析客户端输入
try:
gesture = int(data.decode().strip())
if gesture not in [ROCK, PAPER, SCISSORS]:
raise ValueError
except ValueError:
conn.sendall(b'无效的手势,请重新输入:')
continue
# 服务器随机出拳
server_gesture = random.randint(0, 2)
# 判断胜负
result = rules[gesture][server_gesture]
if result == WIN:
conn.sendall(b'你赢了!\n')
elif result == LOSE:
conn.sendall(b'你输了!\n')
else:
conn.sendall(b'平局!\n')
# 关闭连接
conn.close()
print('客户端已断开连接')
```
以上是一个简单的“石头、剪子、布”游戏服务器代码示例,可以使用Linux中的套接字机制实现网络通信。
阅读全文