pygame随机移动敌人

吉安

我正在尝试将岩石发送到随机位置,我尝试过:self.x + = random.randint(-5,5)但这不好,因为每次主循环迭代时都会重新计算随机数,这会创建一种闪烁的效果,除了令人恐惧之外,还可以阻挡岩石的直角。我该如何解决?我只是想从屏幕的高中心开始,岩石以任意角度下降,然后实现一些弹跳并创建我的视频游戏,但是我仍然坚持这一点。这是我第一次在该论坛上写文章,因此,如果我做错了事,请事先道歉。

我想要岩石的这个随机角度

这是我的代码:

import pygame
import random
import time
import math

pygame.init()

display_width = 600
display_height = 500
screen = pygame.display.set_mode( (display_width, display_height) )
fps = 60
font_ubuntumono = pygame.font.SysFont('ubuntumono', 50, True)
rock = pygame.image.load('cave-painting.png').convert_alpha()
rock_width = rock.get_width()
rock_height = rock.get_height()
player = pygame.image.load('wizard.png').convert_alpha()

def initialize():
    global speed_rock, rocks, playerX, playerY
    speed_rock = 2
    playerX = display_width//2
    playerY = 400
    rocks = []
    rocks.append( RockClass() )

class RockClass:
    def __init__(self):
        self.x = display_width//2
        self.y = 0

    def continueDraw(self, a, b):
        self.x += **???**
        self.y += speed_rock
        screen.blit( rock, (self.x, self.y) )

    def collision(self, player, playerX, playerY):
        tolerability = 5
        right_player = playerX + player.get_width() - tolerability
        left_player = playerX + tolerability
        up_player = playerY + tolerability
        right_rock = self.x + rock_width
        left_rock = self.x
        down_rock = self.y + rock_height

        #check collision
        if down_rock > up_player and 
           ( ( left_player < left_rock and left_rock < right_player) or 
               ( right_player > right_rock and right_rock > left_player) ):
            #delete the rock from the screen
            self.x = 5000

initialize()

def update():
    pygame.display.update()
    pygame.time.Clock().tick(fps)

def drawThings():
    #draw background
    screen.fill ( (255, 255, 255) )

    #draw rocks
    for rock2 in rocks:
        rock2.continueDraw(210, 210)

    #draw the player
    screen.blit( player, (playerX, playerY) )

running = True
#main loop
while running:

    #event loop
    for event in pygame.event.get():

        #move player
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                playerX -= 30
            if event.key == pygame.K_RIGHT:
                playerX += 30

        #quit
        if event.type == pygame.QUIT:
            running = False

    #to generate infinite rocks
    if rocks[-1].y > 10:
        rocks.append( RockClass() )

    #check the player-rock collision
    for rock2 in rocks:
        rock2.collision(player, playerX, playerY)

    #bordo alto
    if playerX <= 0:
        playerX = 0
    if playerX >= 600:
        playerX = 600

    #update screen
    drawThings()
    update()
拉比德76

我建议通过random.uniform(a, b)以下构造函数为x轴生成随机速度Rock

class Rock:
    def __init__(self):
        self.x = display_width//2
        self.y = 0
        self.speed_x = random.uniform(-2, 2)

加入self.speed_xself.xcontinueDraw

class Rock:
    # [...]

    def continueDraw(self, a, b):
        self.x += self.speed_x
        self.y += speed_rock
        screen.blit( rock_img, (self.x, self.y) )

我建议pygame.Rect分别colliderect()用于碰撞检测:

class Rock:
    # [...]

    def collision(self, player, playerX, playerY):

        tolerability = 5
        player_rect = pygame.Rect(playerX+tolerability, playerY,
                                  player.get_width()-2*tolerability, player.get_height())
        rock_rect = pygame.Rect(self.x, self.y, rock_width, rock_height)

        #check collision
        if player_rect.colliderect(rock_rect):
            #delete the rock from the screen
            self.x = 5000

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

随机生成敌人pygame

来自分类Dev

pygame-及时将敌人随机掉落

来自分类Dev

Pygame吃豆子-敌人随机运动

来自分类Dev

在路径问题Pygame上移动敌人-塔防游戏

来自分类Dev

Pygame敌人不会向下移动-塔防游戏

来自分类Dev

当播放器不再碰撞时,敌人停止移动。Pygame

来自分类Dev

Pygame - 如何使hitbox 与敌人的移动一起工作?

来自分类Dev

如何随机产生敌人?

来自分类Dev

libgdx敌人移动

来自分类Dev

Libgdx敌人移动

来自分类Dev

向左移动敌人

来自分类Dev

我如何让敌人向玩家移动并预测其在pygame中的路径

来自分类Dev

敌人有射击敌人的问题吗?pygame

来自分类Dev

敌人pygame怪异的生成位置

来自分类Dev

敌人对象不会移动LibGDX

来自分类Dev

使敌人跟随移动玩家的问题

来自分类Dev

敌人不断向右移动

来自分类Dev

使敌人跟随移动玩家的问题

来自分类Dev

XNA:需要帮助,在计时器的刻度上从任一侧生成敌人,然后让他们随机移动

来自分类Dev

XNA:需要帮助,在计时器的刻度上从任一侧生成敌人,然后让他们随机移动

来自分类Dev

如何使用pygame在迷宫中随机移动对象?

来自分类Dev

随机产生一个敌人

来自分类Dev

如何让敌人跟随pygame中的玩家?

来自分类Dev

Pygame / Python测试列表中的敌人之间?

来自分类Dev

无法在Pygame中产生多个敌人

来自分类Dev

时间和敌人出现的问题(Python,Pygame)

来自分类Dev

与pygame.sprite.spritecollide()的敌人碰撞

来自分类Dev

用pygame创建几个敌人的问题

来自分类Dev

在Pygame中不会停止的敌人