马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 ZYKsslm 于 2023-11-12 00:37 编辑
使用ren_communicotar模块制作一个简单的网络聊天小游戏
上一个帖子的范例不是特别严谨,若想要实际项目中使用请仔细看下面的例子
服务端代码:
[RenPy] 纯文本查看 复制代码 init python:
def conn_suc(socket):
renpy.notify("连接成功!点击屏幕继续......")
def conn_err(err):
renpy.notify(f"出现异常:\n{err}")
def receive(msg, socket):
renpy.notify(f"接收到{socket.getpeername()[0]}的消息:\n{msg.decode('utf-8')}")
define e = Character("艾琳")
define server = RenServer()
screen leave():
frame:
align (0.0, 0.0)
textbutton "返回标题":
action MainMenu(save=False)
# 确保回到标题前关闭连接
label before_main_menu:
if server.has_communicated:
$ server.close()
return
# 确保退出前关闭连接
label quit:
if server.has_communicated:
$ server.close()
return
label start:
e "请愉快地聊天吧!"
menu:
"继续":
jump chat
"算了":
return
return
label chat:
show screen leave()
python:
with server:
server.set_conn_event(conn_suc)
server.set_receive_event(receive)
server.set_error_event(conn_err)
renpy.notify("开始连接!")
server.run()
server.listen_event(RenServer.CONNECT_EVENT, "正在连接中......")
while True:
content = renpy.input("说点什么呢?")
for socket in server.client_socket_list:
if server.send(socket, content.encode("utf-8")):
renpy.notify("消息发送成功!")
客户端代码:
[RenPy] 纯文本查看 复制代码 init python:
def conn_suc():
renpy.notify("连接成功!点击屏幕继续......")
def conn_err(err):
renpy.notify(f"出现异常:\n{err}")
def receive(msg):
renpy.notify(f"接收到服务端消息:\n{msg.decode('utf-8')}")
define e = Character("艾琳")
define client = RenClient("192.168.2.23", 8888)
screen leave():
frame:
align (0.0, 0.0)
textbutton "返回标题":
action MainMenu(save=False)
# 确保回到标题前关闭连接
label before_main_menu:
if client.has_communicated:
$ client.close()
return
# 确保退出前关闭连接
label quit:
if client.has_communicated:
$ client.close()
return
label start:
e "请愉快地聊天吧!"
menu:
"继续":
jump chat
"算了":
return
return
label chat:
show screen leave()
python:
with client:
client.set_conn_event(conn_suc)
client.set_receive_event(receive)
client.set_error_event(conn_err)
renpy.notify("开始连接!")
client.run()
client.listen_event(RenClient.CONNECT_EVENT, "正在连接中......")
while True:
content = renpy.input("说点什么呢?")
if client.send(content.encode("utf-8")):
renpy.notify("消息发送成功!")
|