python做一个局域网联机小游戏【游戏工程师第一课】
我们在大学时期都学过网络方面呢课程,其中在学习编程的过程中,学习好的童鞋可能经常会听到套接字、网络编程之类的词汇,笔者今天就用python来开发一个局域网连接游戏。
机房里局域网玩自己做的游戏效果如下:
开发语言 | python |
---|---|
开发种类 | 网络编程&pygame |
- 网络编程
所谓网络编程,本质上来说就是对信息发送到接收,网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。
详细请看https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/9986797?fr=aladdin
网络编程中必不可少的就是套接字了,套接字就是应用程序和网络协议的一个接口,使用tcp/udp协议的方式传输
现在我们来提高点难度,看看笔者写的实际应用中套接字server(服务端)和client(客户端)
def server(arg1,arg2):
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
if exitt:
break
print('waiting for connection...')
tcpCliSock,addr = tcpSerSock.accept()
print('...connected from: ',addr)
while True:
data = tcpCliSock.recv(BUFSIZ)
data = str(data,encoding='utf-8')
thePos[0] = int(data.split(',',-1)[0])
thePos[1] = int(data.split(',',-1)[1])
# print(type(data))
if not data:
break
message = str(pos[0]) + ',' + str(pos[1]) +','+ str(exposH)
message = message.encode('utf-8')
tcpCliSock.send(message)
tcpSerSock.close()
def client(arg1,arg2):
HOST = '192.168.16.83'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
if exitt:
break
data = str(pos[0]) + ',' + str(pos[1])
data = data.encode('utf-8')
if not data:
break
tcpCliSock.send(data)
message = tcpCliSock.recv(BUFSIZ)
message = str(message,encoding='utf-8')
thePos[0] = int(message.split(',',-1)[0])
thePos[1] = int(message.split(',',-1)[1])
exitPos