用AIO实现“剪刀石头布”的网络游戏的代码
时间: 2023-09-13 14:10:44 浏览: 81
好的,以下是基于AIO的“剪刀石头布”网络游戏的代码实现,供您参考:
```python
import asyncio
import random
async def handle_request(reader, writer):
# 定义游戏规则
rules = {'rock': 'scissors', 'scissors': 'paper', 'paper': 'rock'}
# 生成游戏选项
options = list(rules.keys())
option = random.choice(options)
# 向客户端发送游戏选项
writer.write(f"Game started! Please choose: {', '.join(options)}\n".encode())
await writer.drain()
# 接收客户端选择
data = await reader.read(100)
choice = data.decode().strip()
# 判断获胜者
if choice not in options:
result = f"Invalid choice! Please choose from: {', '.join(options)}\n"
elif choice == option:
result = f"Tie! The option is {option}\n"
elif rules[choice] == option:
result = f"You Win! The option is {option}\n"
else:
result = f"You Lose! The option is {option}\n"
# 向客户端发送游戏结果
writer.write(result.encode())
await writer.drain()
# 关闭连接
writer.close()
async def main():
# 创建服务器
server = await asyncio.start_server(handle_request, '127.0.0.1', 8888)
# 输出服务器地址
addr = server.sockets[0].getsockname()
print(f'Serving on {addr}')
# 保持服务器运行
async with server:
await server.serve_forever()
asyncio.run(main())
```
该代码实现了一个简单的“剪刀石头布”网络游戏。服务器监听本地地址'127.0.0.1'和端口号8888,客户端连接后会随机生成一个游戏选项,然后向客户端发送游戏选项。客户端选择后,服务器会判断获胜者,并向客户端发送游戏结果。
阅读全文