Почему я не могу использовать числа с плавающей точкой вместо целых? - PullRequest
0 голосов
/ 24 апреля 2020
import pygame
import random

pygame.init()

# create screen
screen = pygame.display.set_mode((1000, 600))

# Title + Logo
pygame.display.set_caption("Space Invader")
icon = pygame.image.load("chicken.png")
pygame.display.set_icon(icon)

# Player icon
player_icon = pygame.image.load("spaceship.png")
playerX = 400
playerY = 500

player_changeX = 0
player_changeY = 0

# enemy Player
enemy_icon = pygame.image.load("space-invaders.png")
enemyX = random.randint(0, 936)
enemyY = random.randint(-100, -50)

enemy_changeX = random.randint (0.1, 0.5)
enemy_changeY = random.randint (0.1, 0.5)

if enemyY >= 500:
    print("Game over")
    exit()


def player(x, y):
    screen.blit(player_icon, (x, y))


def enemy(x, y):
    screen.blit(enemy_icon, (x, y))


# game loop
running = True
while running:

    # backround colour  RGB
    screen.fill((0, 0, 0))

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            # If key pressed check whether its right or left
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player_changeX = -1
            if event.key == pygame.K_RIGHT:
                player_changeX = 1
            if event.key == pygame.K_UP:
                player_changeY = -1
            if event.key == pygame.K_DOWN:
                player_changeY = 1
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                player_changeX = 0
            if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                player_changeY = 0
    # If player reaches boarder
    if playerX >= 936:
        playerX = 20
    if playerX <= 0:
        playerX = 936
    if playerY <= 0:
        playerY = 0
    if playerY >= 550:
        playerY = 550
    # enemy control
    if enemyX >= 936:
        enemyX = 20
    if enemyX <= 0:
        enemyX = 936
    if enemyY <= 0:
        enemyY = 0
    if enemyY >= 550:
        enemyY = random.randint(-100, -50)

    # Player change in coordinates
    playerX += player_changeX
    playerY += player_changeY

    #enemy change in coordinates
    enemyX += enemy_changeX
    enemyY += enemy_changeY

    #Results
    player(playerX, playerY)
    enemy(enemyX, enemyY)
    pygame.display.update()

Я только начал заниматься программированием, я создаю небольшую игру. Это еще не закончено, но я сталкиваюсь с проблемой, я хочу использовать числа с плавающей точкой вместо целых чисел, но это не позволяет мне. Вы можете изменить это? и если да, то как. Номер развязки, который я хочу использовать, указан в враге_изменении X и Y. Ошибка, которую он мне дает,

строка 212, в случайном повышении ValueError ("нецелое аргумент 1 для randrange ()") ValueError: не- целое число arg 1 для randrange ()

, хотя у меня нет строки 212

Надеюсь, вопрос был достаточно точным.

1 Ответ

1 голос
/ 24 апреля 2020

Прежде всего, вы запрашиваете целое число от 0.1 до 0.5, что невозможно по очевидным причинам.

Чтобы получить float, вы можете использовать random.uniform(0.1, 0.5).

Хотя я должен отметить, что пиксели не могут быть значениями с плавающей точкой, потому что нет половины пикселей. Таким образом, вы должны подумать, действительно ли вам нужно значение с плавающей запятой для значения изменения пикселя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...