누구든지 내 코드에서 뱀 크기를 늘리는 방법을 말할 수 있습니까?

리싯 팬츠

다음은 내 코드입니다. 길이를 늘리려 고 할 때마다 늘지 않는 것 같고 게임을 실행할 때.

게임을 실행할 때 가끔씩 뱀의 머리가 일정 시간 깜빡이거나 깜빡이고 뱀이 음식을 먹었을 때 특정 시간에 조금씩 깜빡 거리는 대신 길이가 늘어나지 않습니다.

적용된 논리로 코드를 첨부했습니다. 이 문제에 대한 해결책이 있습니까?

길이 증가 논리로 적용한 코드는 다음과 같습니다.

내 논리는 다음과 같습니다.

import pygame
import time
import sys
import random


a = print("1) Easy")
b = print("2) Medium")
c = print("3) Hard")

while True:
    difficulty = input("Enter Difficulty Level: ")
    if difficulty == "1":
        speed = 5
        break
    elif difficulty == "2":
        speed = 6
        break
    elif difficulty == "3":
        speed = 8
    else:
        print("Choose from Above Options Only!")


# Initialise Game
pygame.init()
clock = pygame.time.Clock()


# Screen and Window Size:
screen_width = 800
screen_height = 700
screen = pygame.display.set_mode((screen_width, screen_height))
caption = pygame.display.set_caption("Snake Game")
icon = pygame.image.load("snake.png")
pygame.display.set_icon(icon)

# Colors
red = (255, 0, 0)
blue = (0, 0, 255)
green = (0, 255, 0)
white = (255, 255, 255)

# Snake Editing
x1 = 350
y1 = 300
snake = pygame.Rect([x1, y1, 20, 20])

x1_change = 0       
y1_change = 0

snake_size = 15

snk_list = []
snk_length = 1

# Snake Food
food_x = random.randint(30, screen_width - 40)
food_y = random.randint(30, screen_height - 40)
food_height = 15
food_width = 15

# Game State
game_over = True

# Game over
font = pygame.font.SysFont("freelansbold.tff", 64)

# Score Counter
score = 0
score_font = pygame.font.SysFont("chiller", 50)


# TO INCREASE SNAKE LENGTH LOGIC:
def plot_snake(gameWindow, color, snk_list, snake_size):
    for x, y in snk_list:
        pygame.draw.rect(gameWindow, color, [x, y, snake_size, snake_size])


def game_over_text(text, color):
    x = font.render(text, True, (240, 0, 0))
    screen.blit(x, [screen_width//2 - 135, screen_height//2 - 25])


def score_show():
    text = score_font.render("Score: " + str(score), True, (255, 255, 255))
    screen.blit(text, (20, 10))


def main_loop():
    global x1, y1, x1_change, y1_change, game_over, food_x, food_y, score, speed, snk_list, snake_size, snk_length
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        # User Input
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT or event.key == pygame.K_a:
                x1_change = speed * -1
                y1_change = 0
            elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
                x1_change = speed
                y1_change = 0
            elif event.key == pygame.K_UP or event.key == pygame.K_w:
                y1_change = speed * -1
                x1_change = 0
            elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
                y1_change = speed
                x1_change = 0

    # Game Over Checking
    if x1 >= screen_width or x1 < 0 or y1 >= screen_height or y1 < 0:
        game_over = False

    x1 += x1_change
    y1 += y1_change

    if abs(x1 - food_x) < 7 and abs(y1 - food_y) < 7:
        score += 1
        food_x = random.randint(30, screen_width - 40)
        food_y = random.randint(30, screen_height - 40)
        speed += 0.2
        snk_length += 5

    # Drawing On Screen
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, red, [x1, y1, 15, 15])
    pygame.draw.rect(screen, green, [food_x, food_y, food_width, food_height])
    score_show()
    pygame.display.flip()

#SNAKE LENGTH LOGIC
    head = []
    head.append(x1)
    head.append(y1)
    snk_list.append(head)

    if len(snk_list) > snk_length:
        del snk_list[0]

    plot_snake(screen, red, snk_list, snake_size)
    # Final Initialisation
    pygame.display.flip()
    clock.tick(70)


# Main Game Loop
while game_over:
    main_loop()

# Game_Over
screen.fill((0, 0, 0))
game_over_text("Game Over!!!", (255, 0, 0))
pygame.display.flip()
time.sleep(2)
pygame.quit()
quit()

Rabbid76

뱀의 이동 거리는 "snake_size"여야합니다.

def main_loop():

    # [...]

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        # User Input
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT or event.key == pygame.K_a:
                x1_change = -snake_size
                y1_change = 0
            elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
                x1_change = snake_size
                y1_change = 0
            elif event.key == pygame.K_UP or event.key == pygame.K_w:
                y1_change = -snake_size
                x1_change = 0
            elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
                y1_change = snake_size
                x1_change = 0

그러나 pygame.time.Clock초당 프레임과 게임 속도를 제어하는 ​​데 사용 합니다.

def main_loop():
 
    # [...]

    clock.tick(speed)

pygame.Rectcollidrect사용 하여 뱀과 음식의 충돌을 찾습니다. 파이 게임에서 두 개의 직사각형 객체 또는 이미지 간의 충돌을 감지하는 방법 도 참조하십시오 . Increment snk_length, 충돌이 감지되면 :

def main_loop():
    # [...]

    global snk_length

    # [...]

    snake_rect = pygame.Rect(x1, y1, snake_size, snake_size)
    food_rect = pygame.Rect(food_x, food_y, snake_size, snake_size)
    if snake_rect.colliderect(food_rect):
        snk_length += 1
        score += 1
        food_x = random.randint(30, screen_width - 40)
        food_y = random.randint(30, screen_height - 40)
        speed += 1

뱀 몸의 움직임을 연결하려면 어떻게해야합니까? 의 지침을 따르십시오 . . 뱀의 새 머리 위치를의 머리 snk_list에두고 꼬리의 요소를 삭제합니다.

def main_loop():

    # [...]

    #SNAKE LENGTH LOGIC
    snk_list.insert(0, [x1, y1])
    if len(snk_list) > snk_length:
        del snk_list[-1]

완료 main_loop:

def main_loop():
    global x1, y1, x1_change, y1_change, game_over, food_x, food_y, score, speed, snk_list, snake_size
    global snk_length
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        # User Input
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT or event.key == pygame.K_a:
                x1_change = -snake_size
                y1_change = 0
            elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
                x1_change = snake_size
                y1_change = 0
            elif event.key == pygame.K_UP or event.key == pygame.K_w:
                y1_change = -snake_size
                x1_change = 0
            elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
                y1_change = snake_size
                x1_change = 0

    # Game Over Checking
    if x1 >= screen_width or x1 < 0 or y1 >= screen_height or y1 < 0:
        game_over = False

    x1 += x1_change
    y1 += y1_change

    snake_rect = pygame.Rect(x1, y1, snake_size, snake_size)
    food_rect = pygame.Rect(food_x, food_y, snake_size, snake_size)
    if snake_rect.colliderect(food_rect):
        snk_length += 1
        score += 1
        food_x = random.randint(30, screen_width - 40)
        food_y = random.randint(30, screen_height - 40)
        speed += 1

    # Drawing On Screen
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, red, [x1, y1, 15, 15])
    pygame.draw.rect(screen, green, [food_x, food_y, food_width, food_height])
    score_show()
    pygame.display.flip()

    #SNAKE LENGTH LOGIC
    snk_list.insert(0, [x1, y1])
    if len(snk_list) > snk_length:
        del snk_list[-1]

    plot_snake(screen, red, snk_list, snake_size)
    # Final Initialisation
    pygame.display.flip()
    clock.tick(speed)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

누구든지 내가 어떻게 getter와 setter를 아래 코드에 넣을 수 있는지 그리고 정확히 getter와 setter가 무엇을 할 수 있는지 말할 수 있습니까?

분류에서Dev

누구든지 내 코드에서 무엇이 잘못되었는지 말해 줄 수 있습니까?

분류에서Dev

누구든지 내 기능에 어떤 문제가 있는지 말해 줄 수 있습니까?

분류에서Dev

메뉴 구동 배열 조작 프로그램에서 삽입 또는 삭제 기능을 호출하려고 할 때 내 프로그램이 충돌하는 이유를 누구든지 말할 수 있습니까?

분류에서Dev

누구든지이 어레이를 만드는 더 빠른 방법을 제안 할 수 있습니까?

분류에서Dev

Google지도 : 누구든지 내 코드에서 아래 위치를 설정하는 데 도움을 줄 수 있습니까?

분류에서Dev

누구든지 이것에 대한 자바 스크립트 동등한 것을 말할 수 있습니까?

분류에서Dev

누구든지 내 PHP에서 구문 오류를 찾을 수 있습니까?

분류에서Dev

누구든지 파이썬에서 첨부 된 것과 같은 그래프를 그리는 방법을 말해 줄 수 있습니까?

분류에서Dev

누구든지 ac 프로그램을 만드는 방법을 도와서 문장 내부의 단어 중심을 인쇄 할 수 있습니까?

분류에서Dev

누구든지 내가 psql 8.x를 어디서 찾을 수 있는지 알고 있습니까?

분류에서Dev

이 코드를 작동시킬 수 없습니다. 누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? subl은 18 행에 오류가 있다고 말하지만 실제로는 알아낼 수 없습니다.

분류에서Dev

Windows 응용 프로그램이 Multicast 224.0.0.1 등을 통해 데이터를 보내야하는 이유에 대해 누구든지 말해 줄 수 있습니까?

분류에서Dev

Windows 응용 프로그램이 Multicast 224.0.0.1 등을 통해 데이터를 보내야하는 이유에 대해 누구든지 말해 줄 수 있습니까?

분류에서Dev

나는 ajax에서 빈 응답을 받고 있었는데 누구든지 내가 어디에서 실수했는지 말해 줄 수 있습니까?

분류에서Dev

누구든지이 CSS 코드에 무엇이 잘못되었는지 말할 수 있습니까?

분류에서Dev

누구든지이 C 코드에서 분할 오류가 발생하는 이유를 알 수 있습니까?

분류에서Dev

누구든지 Android 앱에서 메시지를 통해 경도 및 위도 좌표를 보내는 방법을 알려줄 수 있습니까?

분류에서Dev

내 HTML 코드에서 Google 글꼴 코드를 사용할 수있는 방법이 있습니까?

분류에서Dev

누구든지이 코드를 수정할 수 있습니까?

분류에서Dev

누구든지 내게 CMVideoFormatDescriptionGetCleanAperture ()를 설명 할 수 있습니까?

분류에서Dev

누구든지 가라테에서 두 응답 사이의 모든 불일치를 얻는 방법을 설명 할 수 있습니까?

분류에서Dev

누구든지 Selenium에서 스크린 샷을 설명 할 수 있습니까?

분류에서Dev

누구든지이 코드가 무엇을하는지 말해 줄 수 있습니까?

분류에서Dev

누구든지 String에서 변수를 바인딩하는 방법을 도울 수 있습니까?

분류에서Dev

아래 코드에서 구문 오류가 발생하는 이유를 이해할 수 없습니다. 누구든지 나를 도울 수 있습니까?

분류에서Dev

누구든지 내 코드의 문제를 볼 수 있습니까 (int를 부울로 변환 할 수 없음) 처리

분류에서Dev

C에서 구조를 통해 스택을 구현하려고 시도했지만 아래 코드에서 런타임 오류가 발생했습니다. 누구든지 무엇이 잘못되었는지 설명하고 지적 할 수 있습니까?

분류에서Dev

누구든지이 코드가 C #에서 정확히 무엇을 의미하는지 말해 줄 수 있습니까?

Related 관련 기사

  1. 1

    누구든지 내가 어떻게 getter와 setter를 아래 코드에 넣을 수 있는지 그리고 정확히 getter와 setter가 무엇을 할 수 있는지 말할 수 있습니까?

  2. 2

    누구든지 내 코드에서 무엇이 잘못되었는지 말해 줄 수 있습니까?

  3. 3

    누구든지 내 기능에 어떤 문제가 있는지 말해 줄 수 있습니까?

  4. 4

    메뉴 구동 배열 조작 프로그램에서 삽입 또는 삭제 기능을 호출하려고 할 때 내 프로그램이 충돌하는 이유를 누구든지 말할 수 있습니까?

  5. 5

    누구든지이 어레이를 만드는 더 빠른 방법을 제안 할 수 있습니까?

  6. 6

    Google지도 : 누구든지 내 코드에서 아래 위치를 설정하는 데 도움을 줄 수 있습니까?

  7. 7

    누구든지 이것에 대한 자바 스크립트 동등한 것을 말할 수 있습니까?

  8. 8

    누구든지 내 PHP에서 구문 오류를 찾을 수 있습니까?

  9. 9

    누구든지 파이썬에서 첨부 된 것과 같은 그래프를 그리는 방법을 말해 줄 수 있습니까?

  10. 10

    누구든지 ac 프로그램을 만드는 방법을 도와서 문장 내부의 단어 중심을 인쇄 할 수 있습니까?

  11. 11

    누구든지 내가 psql 8.x를 어디서 찾을 수 있는지 알고 있습니까?

  12. 12

    이 코드를 작동시킬 수 없습니다. 누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? subl은 18 행에 오류가 있다고 말하지만 실제로는 알아낼 수 없습니다.

  13. 13

    Windows 응용 프로그램이 Multicast 224.0.0.1 등을 통해 데이터를 보내야하는 이유에 대해 누구든지 말해 줄 수 있습니까?

  14. 14

    Windows 응용 프로그램이 Multicast 224.0.0.1 등을 통해 데이터를 보내야하는 이유에 대해 누구든지 말해 줄 수 있습니까?

  15. 15

    나는 ajax에서 빈 응답을 받고 있었는데 누구든지 내가 어디에서 실수했는지 말해 줄 수 있습니까?

  16. 16

    누구든지이 CSS 코드에 무엇이 잘못되었는지 말할 수 있습니까?

  17. 17

    누구든지이 C 코드에서 분할 오류가 발생하는 이유를 알 수 있습니까?

  18. 18

    누구든지 Android 앱에서 메시지를 통해 경도 및 위도 좌표를 보내는 방법을 알려줄 수 있습니까?

  19. 19

    내 HTML 코드에서 Google 글꼴 코드를 사용할 수있는 방법이 있습니까?

  20. 20

    누구든지이 코드를 수정할 수 있습니까?

  21. 21

    누구든지 내게 CMVideoFormatDescriptionGetCleanAperture ()를 설명 할 수 있습니까?

  22. 22

    누구든지 가라테에서 두 응답 사이의 모든 불일치를 얻는 방법을 설명 할 수 있습니까?

  23. 23

    누구든지 Selenium에서 스크린 샷을 설명 할 수 있습니까?

  24. 24

    누구든지이 코드가 무엇을하는지 말해 줄 수 있습니까?

  25. 25

    누구든지 String에서 변수를 바인딩하는 방법을 도울 수 있습니까?

  26. 26

    아래 코드에서 구문 오류가 발생하는 이유를 이해할 수 없습니다. 누구든지 나를 도울 수 있습니까?

  27. 27

    누구든지 내 코드의 문제를 볼 수 있습니까 (int를 부울로 변환 할 수 없음) 처리

  28. 28

    C에서 구조를 통해 스택을 구현하려고 시도했지만 아래 코드에서 런타임 오류가 발생했습니다. 누구든지 무엇이 잘못되었는지 설명하고 지적 할 수 있습니까?

  29. 29

    누구든지이 코드가 C #에서 정확히 무엇을 의미하는지 말해 줄 수 있습니까?

뜨겁다태그

보관