14
2024
11

python编程学习-乒乓

学习python编程,在新东方少儿编程官网的自由创作平台做的一些作品。

可以在线运行,效果如下(在新页面中打开链接):

代码如下(用到平台自定义的xdf库):

from xdf import *

fill("space")


player1 = box(0, 0, 200, 40, "red")
player2 = box(0, 0, 200, 40, "blue")
ball = circle(0, 0, 30, "green")
txt = text("按空格键开始", 768/2, 1024/2, 100, "red", "center")
isPlaying = False

player1SpeedX = 0
player1X = 0
player1Y = 0
player2SpeedX = 0
player2X = 0
player2Y = 0
ballX = 0
ballY = 0
ballSpeedX = 0
ballSpeedY = 0
isLeftDown = False
isRightDown = False
ballR = 30
halfW = 100
halfH = 20
turnN = 0

def reset():
    global player1X, player1Y, player2X, player2Y
    global ballX, ballY, ballSpeedX, ballSpeedY, isPlaying
    player1X = 768 / 2
    player1Y = 20 + 10
    player2X = 768 / 2
    player2Y = 1024-20-10
    ballX = 768/2
    ballY = 1024/2
    ballSpeedX = random(10)
    ballSpeedY = -10
    txt.show()
    isPlaying = False

def update():
    ball.move(ballX, ballY)
    player1.move(player1X, player1Y)
    player2.move(player2X, player2Y)

reset()
update()

def keydown(keyCode, key):
    global isPlaying, isLeftDown, isRightDown, txt
    if keyCode == 32:
        if isPlaying == False:
            isPlaying = True
            txt.hide()
    elif keyCode == 37:
        isLeftDown = True
    elif keyCode == 39:
        isRightDown = True

def keyup(keyCode, key): 
    global isLeftDown, isRightDown
    if keyCode == 37:
        isLeftDown = False
    elif keyCode == 39:
        isRightDown = False

def updatePlayer2():
    global isPlaying, isLeftDown, isRightDown
    global player2X, player2SpeedX, halfW
    if isPlaying:
        if isLeftDown:
            player2SpeedX -= 5
        if isRightDown:
            player2SpeedX += 5
        player2X += player2SpeedX
        player2SpeedX *= 0.9
        if player2X < halfW:
            player2X = halfW
            player2SpeedX = 0
        elif player2X > 768 - halfW:
            player2X = 768 - halfW
            player2SpeedX = 0

def updatePlayer1():
    global isPlaying
    global ballSpeedY, ballX, player1X, player1SpeedX, halfW
    if isPlaying:
        if ballSpeedY < 0:
            a = random(1)
            if a > 0.5:
                dx = ballX - player1X
                if dx > 0:
                    player1SpeedX += 5
                elif dx < 0:
                    player1SpeedX -= 5
        player1X += player1SpeedX
        player1SpeedX *= 0.9
        if player1X < halfW:
            player1X = halfW
            player1SpeedX = 0
        elif player1X > 768 - halfW:
            player1X = 768 - halfW
            player1SpeedX = 0

def updateBall():
    global isPlaying
    global ballSpeedX, ballSpeedY, ballX, ballY, ballR
    global player1X, player1Y, player2X, player2Y, player1SpeedX, player2SpeedX
    global halfW, halfH, turnN
    if isPlaying:
        ballX += ballSpeedX
        ballY += ballSpeedY
        if ballX <= ballR:
            ballX = ballR
            ballSpeedX = -ballSpeedX
        elif ballX >= 768 - ballR:
            ballX = 768 - ballR
            ballSpeedX = -ballSpeedX
        if ballSpeedY > 0:
            if ballY + ballR >= player2Y - halfH and ballX > player2X - halfW and ballX < player2X + halfW:
                ballSpeedY = -ballSpeedY
                ballSpeedX += player2SpeedX
                turnN+=1
                if turnN >= 10:
                    ballSpeedY *= 1.2
                    turnN = 0
        else:
            if ballY - ballR <= player1Y + halfH and ballX > player1X - halfW and ballX < player1X + halfW:
                ballSpeedY = -ballSpeedY
                ballSpeedX += player1SpeedX
        if ballY <= player1Y + ballR or ballY >= player2Y-ballR:
            reset()
            return

def loop():
    updateBall()
    updatePlayer1()
    updatePlayer2()
    update()


也可以下载代码,本地python环境运行(用pygame封装了xdf库)。



« 上一篇下一篇 »

相关文章:

python编程学习-华容道  (2024-11-14 16:43:25)

python编程学习-动画  (2024-11-14 16:39:37)

python编程学习-别踩白块  (2024-11-14 16:38:59)

python编程学习-俄罗斯方块  (2024-11-14 16:38:19)

python编程学习-井字棋  (2024-11-14 16:34:9)

python编程学习-五子棋  (2024-11-14 16:33:23)

python编程学习-一笔画关卡生成  (2024-11-14 16:32:6)

python编程学习-一笔画  (2024-11-14 16:31:27)

python编程学习-woblox  (2024-11-14 16:30:47)

python编程学习-where-my-ice-cream  (2024-11-14 16:29:57)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。