好摄之徒℡ 2022-05-28 16:08 采纳率: 100%
浏览 70
已结题

python 写个小游戏实现通信功能

用PYTHON写个小游戏,实现通讯功能,代码模块有了,不知道该怎么添加

这是游戏部分

import random
import pgzrun
import time

HEIGHT = 800
WIDTH = 450
WORD = '''春风化雨 天罗地网 一心一意 一言为定 头头是道 助人为乐 井井有条 乐极生悲 万水千山 桃红柳绿
    贪生怕死 走马观花 一路平安 莺歌燕舞 鸟语花香 目中无人 旁若无人 百发百中 安居乐业 拔苗助长 风和日丽
    风平浪静 东山再起 马到成功 满面春风 毛手毛脚 长年累月 面目全非 天网恢恢 瓜田李下'''.split()
background = Actor('background')
ground = Actor('background')
daan = ('')
def draw():
    tishi = random.sample(range(4), 2)
    tiankong = 'XXXX'
    xuanci = random.choice(WORD)
    for i in tishi:  # 把X换成提示字
        tiankong = tiankong[:i] + xuanci[i] + tiankong [i+1:]
    ground.draw()
    screen.draw.text("全 民 猜 猜 猜", (70, 75), fontsize=50,
                            fontname='s', color='red')
    screen.draw.text(tiankong, (80, 180), fontsize=80,
                            fontname='s', color='green')

pgzrun.go()

这是接收部分

#-*- coding:utf-8 -*-
#vxcode : tiantianjt2020
import datetime
import socket
import time

HOST = '0.0.0.0'
PORT = 8080

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(5)

def sub_run_time(timetemp):
    start  = datetime.datetime.fromtimestamp(timetemp)
    run_time = datetime.datetime.now()-start
    return int(run_time.microseconds / 1000.0)

print('server start at: %s:%s' % (HOST, PORT))

while True:
    print("wait client connect.....")

    conn, addr = s.accept()
    print('connected by ' + str(addr))

    while True:
        start  = datetime.datetime.now()
        try:
            indata = conn.recv(1024)
        except:
            conn.close()
            print('client closed connection.')
            break
        if len(indata) == 0: # connection closed
            conn.close()
            print('client closed connection.')
            break
        print('accept:'+str(indata.decode()))
        conn.send(str("server name:zhangsan,path: D://files").encode())
        run_time = datetime.datetime.now()-start
        print('alltime:'+str(int(run_time.microseconds / 1000.0))+'ms')
        time.sleep(5)
        continue

这是发送部分

#-*- coding:utf-8 -*-
import datetime
import socket
import time
import sys

HOST = '127.0.0.1'
PORT = 8080


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))


def sub_run_time(timetemp):
    start  = datetime.datetime.fromtimestamp(timetemp)
    run_time = datetime.datetime.now()-start
    return int(run_time.microseconds / 1000.0)

def err(a,b,c):
    s.close()

sys.excepthook = err

while True:
    try:
        start  = datetime.datetime.now()
        outdata = input('please input message: ')
        print('send: ' + outdata)
        s.send(outdata.encode())
        try:
            indata = s.recv(1024)
        except Exception as e:
            print(e)
            s.close()
            print('server closed connection.')
            break

        print('aceept:'+str(indata.decode()))
        run_time = datetime.datetime.now()-start
        print('alltime:'+str(int(run_time.microseconds / 1000.0))+'ms')
        time.sleep(5)

    except Exception as e:
        print(e)
        s.close()
        print('server closed connection.')


想通过发送端发送答案,游戏接收后判断,如果正确,切换下个成语
  • 写回答

4条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-05-28 16:20
    关注

    你这是服务器端和客户端,一对一通信不难。但是想实现你说的抓取弹幕功能还需要另外的模块。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月28日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络