我正在做一个游戏,玩家尝试避免立方体在屏幕上移动。我正在努力在屏幕外创建多维数据集,并让它们在玩家尝试避开时随机掉下屏幕。我也希望这种情况一直发生,直到玩家击中游戏结束的立方体为止(我认为我可以在程序中进行碰撞)。到目前为止,这是我的代码:
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((280, 800))
pygame.display.set_caption("Cube Run")
icon = pygame.image.load("cube.png")
pygame.display.set_icon(icon)
player_icon = pygame.image.load("cursor.png")
player_x = 124
player_y = 750
player_x_change = 0
def player(player_x, player_y):
screen.blit(player_icon, (player_x, player_y))
running = True
while running:
screen.fill((255, 255, 255))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
player_x_change += 0.7
if event.key == pygame.K_LEFT:
player_x_change -= 0.7
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT or pygame.K_LEFT:
player_x_change = 0
player_x += player_x_change
if player_x < 0:
player_x = 0
elif player_x > 280-32:
player_x = 280-32
player(player_x, player_y)
pygame.display.update()
这是我到目前为止所拥有的一切,包括球员运动。 谢谢您的时间。
答案 0 :(得分:0)
对于敌方立方体,创建一个X / Y坐标数组,每个立方体一个。将Y设置为屏幕上方(负数),将X设置为小于屏幕宽度的随机数。在主循环中,只需在绘制之前增加每个立方体的Y坐标即可。如果立方体掉到屏幕底部,请再次将Y值重置为屏幕上方。根据初始Y值,多维数据集可以呈波浪形进入。我还在循环的底部添加了tick
调用,以降低游戏速度。
这是更新的代码:
import pygame
import random
from random import randint
pygame.init()
screen = pygame.display.set_mode((280, 800))
pygame.display.set_caption("Cube Run")
icon = pygame.image.load("cube.png")
pygame.display.set_icon(icon)
player_icon = pygame.image.load("cursor.png")
player_x = 124
player_y = 750
player_x_change = 0
def player(player_x, player_y):
screen.blit(player_icon, (player_x, player_y))
# create cubes array [[x,y],[x,y],[x,y],....]
cubes = [[
randint(1,260), # X coordinate
randint(-500,-20)] # Y coordinate, -Y is above screen (top of screen is zero)
for x in range(20)] # 20 cubes
# above syntax is a shortcut for the following loop
# cubes = []
# for x in range(20):
# cubes.append([randint(1,260), randint(-500,-20)])
running = True
while running:
screen.fill((255, 255, 255)) # clear screen
# render cubes
for cb in cubes:
cb[1] += 2 # cube moves down 2 pixels
screen.blit(icon,cb) # draw cube
if cb[1] > 800: # if cube passed bottom of screen
cb[1] = -20 # move to above screen
cb[0] = randint(1,260) # random X position
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
player_x_change += 0.7
if event.key == pygame.K_LEFT:
player_x_change -= 0.7
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT or pygame.K_LEFT:
player_x_change = 0
player_x += player_x_change
if player_x < 0:
player_x = 0
elif player_x > 280-32:
player_x = 280-32
player(player_x, player_y)
pygame.display.update()
pygame.time.Clock().tick(60) # slow loop - 60 FPS