Оценить функцию при назначении задачи python - PullRequest
0 голосов
/ 04 мая 2020

здесь у меня проблема в строке 68 кода, где я оцениваю строку кода «snake_y = snake_y-14», как я могу оценить строку с присваиванием, потому что я не видел никаких вопросов относительно операций присваивания, используемых в Функция eval ()

import pygame
import random
import time
import sys


def basic_defaults():
    pygame.init()
    snake_x = 200
    snake_y = 175
    font_for_game_title = pygame.font.Font(None, 36)
    screen = pygame.display.set_mode((800, 600)) #Making Screen for the game
    screen.blit(font_for_game_title.render("Snake Game", True, (0, 255, 255)), (300, 10))# Making title appear
    Clock = pygame.time.Clock()
    yolo=""
    return screen, snake_x, snake_y,Clock,yolo


def snake_movements():
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                yolo = "snake_y = snake_y - 14"
                return yolo
            elif event.key == pygame.K_DOWN:
                yolo = "snake_y = snake_y + 14"
                return yolo
            elif event.key == pygame.K_LEFT:
                yolo = "snake_x = snake_x - 14"
                return yolo
            elif event.key == pygame.K_RIGHT:
                yolo = "snake_x = snake_x + 14"
                return yolo
            else:
                #yolo = "snake_x += 14"
                #return yolo
                pass
def game_loop():
    screen, snake_x, snake_y,clocko,yolo = basic_defaults()
    running = True
    while (running):

        #for moving of snake in the game [code starts]
        screen.fill((0, 0, 0))
        '''for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    yolo="snake_y - 14"
                    return yolo
                elif event.key == pygame.K_DOWN:
                    yolo="snake_y + 14"
                    return yolo
                elif event.key == pygame.K_LEFT:
                    yolo="snake_x - 14"
                    return yolo
                elif event.key == pygame.K_RIGHT:
                    yolo="snake_x + 14"
                    return yolo
                else:
                    pass
                '''
        yolo=snake_movements()
        if yolo == None:
            pass
        else:
            #print(type(yolo))
            print(yolo)
            eval(yolo)
            #exec(yolo)
            print(snake_x, snake_y)
        pygame.draw.rect(screen, (102, 255, 51), (snake_x, snake_y, 10, 10), 4)
        pygame.display.update()
        #for moving of snake in the game [code ends]
        time.sleep(1)
        clocko.tick(30)

game_loop()

, пожалуйста, помогите быстро, так как мне нужно работать над кодом и выполнить эту задачу заранее, спасибо

1 Ответ

0 голосов
/ 04 мая 2020

С одной стороны, я действительно не понимаю, почему необходимо вычислять строку, а не просто выполнить этот код. Было бы лучше не использовать eval() и вместо этого просто использовать код.

Однако, похоже, вам нужна функция exec(). Это похоже на eval(), но оно позволяет присваивания / определения. Подробнее о exec() против eval() можно прочитать здесь и более эффективно пропустить, используя либо eval(), либо exec() в целом.

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