我希望每次客户端向服务器发送内容时桨都移动

问题描述

我正在为一个大学开发项目,我的教授希望该游戏在服务器中运行。我的问题是,即使我将消息从客户端发送到服务器,我也无法移动拨板。

这是服务器/游戏:

import turtle
import socket
#import numpy as np
#from collections import defaultdict
#import os
#import datetime
#clear = lambda: os.system('clear')

#UDP_IP = "192.168.210.169"
#UDP_IP = "192.168.1.70"
    
UDP_IP = "192.168.1.70"
UDP_PORT = 5002
serverSock = socket.socket(socket.AF_INET,socket.soCK_DGRAM) # UDP
serverSock.bind((UDP_IP,UDP_PORT))

while True:
    
    wn = turtle.Screen()
    wn.title("Projeto Pong")
    wn.bgcolor("black")
    wn.setup(width=800,height=600)
    wn.tracer(0)

    # score
    score = 0

    # Stick de jogo
    paddle = turtle.Turtle()
    paddle.speed(0)  # veLocidade de animacao
    paddle.shape("square")
    paddle.color("white")
    paddle.shapesize(stretch_wid=5,stretch_len=1)
    paddle.penup()
    paddle.goto(-350,0)

    # Bola
    ball = turtle.Turtle()
    ball.speed(0)  # veLocidade de animacao
    ball.shape("circle")
    ball.color("yellow")
    ball.penup()
    ball.goto(0,0)
    ball.dx = 0.1
    ball.dy = 0.1  # sempre que a bola se move,move-se 2 pixeis de cada vez

    # Text score
    pen = turtle.Turtle()
    pen.speed(0)
    pen.color("white")
    pen.penup()
    pen.hideturtle()
    pen.goto(0,260)
    pen.write("score: 0",align="center",font=("Courier",24,"normal"))

    # Functions
    def paddle_up(order):
        if order == "up": 
            y = paddle.ycor()
            y += 30
            paddle.sety(y)
              
    def paddle_down(order):
        if order == "down": 
            y = paddle.ycor()
            y -= 30
            paddle.sety(y)

    data,addr = serverSock.recvfrom(1024)
        
    paddle_up(data)
    paddle_down(data)

    while True:
        # Loop Jogo
        wn.update()

        # Mover a Bola
        ball.setx(ball.xcor() + ball.dx)  # somar a posição inicial com o movimento de 2 px
        ball.sety(ball.ycor() + ball.dy)

        # Bordas de Jogo
        if ball.ycor() > 290:
            ball.sety(290)
            ball.dy *= -1

        if ball.ycor() < -290:
            ball.sety(-290)
            ball.dy *= -1

        if ball.xcor() < -390:
            ball.goto(0,0)
            ball.dx *= -1
            pen.clear()
            score = 0
            pen.write("score: {}".format(score),"normal"))

        if ball.xcor() > 390:
            ball.setx(390)
            ball.dx *= -1

        # Colisao entre joystick e bola
        if (ball.xcor() < -340 and ball.xcor() > -350) and (ball.ycor() < paddle.ycor() + 40) and (ball.ycor() > paddle.ycor() - 40):
            ball.setx(-340)
            ball.dx *= -1
            score += 1
            pen.clear()
            pen.write("score: {}".format(score),"normal"))            
serverSock.close()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)