社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python实现智能乒乓球游戏!

Python大全 • 3 天前 • 33 次点击  

本文提供了一个 Python 实现的乒乓球游戏代码,你只需要将代码复制并粘贴到编辑器中即可。


你好,亲爱的 Python 爱好者,今天我想分享一下如何在 Python 中编写一个带有自定义机器人 AI 的乒乓球游戏。我们的挑战是制作两个用户,第一个用户是你,第二个用户是精准度达到 100% 的AI机器人。



Step 1 

导入 turtle 和 Screen

# Step 1 import set up turtle and Screen
import turtle
import random
s = turtle.Screen()
s.title(Pong)
s.bgcolor(black)
s.setup(width=600, height=400)


Step 2 

创建一个球

# Step 2 Create ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape(circle)
ball.color(white)
ball.penup()
ball.goto(0, 0)
ball.dx = 4
ball.dy = 4


Step 3 

创建一个 AI 挡板

# Step 3 Create AI paddle
ai = turtle.Turtle()
ai.speed(0)
ai.shape(square)
ai.color(white)
ai.penup()
ai.goto(-250, 0)
ai.shapesize(stretch_wid=5, stretch_len=1)


Step 4 

创建自己的挡板




    
# Step 4 Create a paddle For You
you = turtle.Turtle()
you.speed(0)
you.shape(square)
you.color(white)
you.penup()
you.goto(250, 0)
you.shapesize(stretch_wid=5, stretch_len=1)


Step 5 

创建移动AI挡板的函数

# Step 5 Create Function to move AI paddle
def move_ai_paddle():
    y = ball.ycor()
    if y > 0:
        ai.sety(ai.ycor() + 2)
    else:
        ai.sety(ai.ycor() - 2)


Step 6 

创建一个函数以移动你的挡板并用键盘控制它

# Step 6 Create a Function to move the your paddle with up and down key
def paddle2_up():
    y = you.ycor()
    y += 20
    you.sety(y)

def paddle2_down():
    y = you.ycor()
    y -= 20
    you.sety(y)
# Your Paddle control it with key
s.listen()
s.onkeypress(paddle2_up, Up)
s.onkeypress(paddle2_down, Down)
Step 7 使用 while 循环开始游戏
# Step 7 Start the game with a while loop
while True:
    s.update()
    
    # Move the ball
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)
    
    # Check for collisions with the walls
    if ball.ycor() > 190 or ball.ycor() < -190:
        ball.dy *= -1
    
    # Move the robot paddle towards the ball
    if ball.ycor() > ai.ycor():
        ai.sety(ai.ycor() + 4)
    elif ball.ycor() < ai.ycor():
        ai.sety(ai.ycor() - 4)
    
           # Check for end game conditions
    if ball.xcor() > 300:
        turtle.textinput(Game EndYou Loss Pong Game With AI!)
        break
    if ball.xcor() < -300:
        turtle.textinput(Game EndYou Win Pong Game With AI!)
        break
    
    # Check for collisions with the robot paddle
    if (ball.xcor() < -240 and ball.xcor() > -250) and (ball.ycor() < ai.ycor() + 40 and ball.ycor() > ai.ycor() - 40):
        if random.random() < 0.9: # 90% chance of collision
            ball.dx *= -1
    
        # Check for collisions with the user paddle
    if (ball.xcor() > 240 and ball.xcor() < 250) and (ball.ycor() < you.ycor() + 40 and ball.ycor() > you.ycor() - 40):
        ball.dx *= -1


全部代码

# Step 1 import set up turtle and Screen
import turtle
import random
s = turtle.Screen()
s.title(Pong)
s.bgcolor(black)
s.setup(width=600, height=400)

# Step 2 Create ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape(circle)
ball.color(white)
ball.penup()
ball.goto(0, 0)
ball.dx = 4
ball.dy = 4

# Step 3 Create AI paddle
ai = turtle.Turtle()
ai.speed(0)
ai.shape(square)
ai.color(white)
ai.penup()
ai.goto(-250, 0)
ai.shapesize(stretch_wid=5, stretch_len=1)

# Step 4 Create a paddle For You
you = turtle.Turtle()
you.speed(0)
you.shape(square)
you.color(white)
you.penup()
you.goto(250, 0)
you.shapesize(stretch_wid=5, stretch_len=1)

# Step 5 Create Function to move AI paddle
def move_ai_paddle():
    y = ball.ycor()
    if y > 0:
        ai.sety(ai.ycor() + 2)
    else:
        ai.sety(ai.ycor() - 2)

# Step 6 Create a Function to move the your paddle
def paddle2_up():
    y = you.ycor()
    y += 20
    you.sety(y)

def paddle2_down():
    y = you.ycor()
    y -= 20
    you.sety(y)
# Your Paddle control it with key
s.listen()
s.onkeypress(paddle2_up, Up)
s.onkeypress(paddle2_down, Down)

# Step 7 Start the game with a while loop
while True:
    s.update()
    
    # Move the ball
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)
    
    # Check for collisions with the walls
    if ball.ycor() > 190 or ball.ycor() < -190:
        ball.dy *= -1
    
    # Move the robot paddle towards the ball
    if ball.ycor() > ai.ycor():
        ai.sety(ai.ycor() + 4)
    elif ball.ycor() < ai.ycor():
        ai.sety(ai.ycor() - 4)
    
           # Check for end game conditions
    if ball.xcor() > 300:
        turtle.textinput(Game EndYou Loss Pong Game With AI!)
        break
    if ball.xcor() < -300:
        turtle.textinput(Game EndYou Win Pong Game With AI!)
        break
    
    # Check for collisions with the robot paddle
    if (ball.xcor() < -240 and ball.xcor() > -250) and (ball.ycor() < ai.ycor() + 40 and ball.ycor() > ai.ycor() - 40):
        if random.random() < 0.9: # 90% chance of collision
            ball.dx *= -1
    
        # Check for collisions with the user paddle
    if (ball.xcor() > 240 and ball.xcor() < 250) and (ball.ycor() < you.ycor() + 40 and ball.ycor() > you.ycor() - 40):
        ball.dx *= -1

turtle.exitonclick()

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183090
 
33 次点击