微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

蛇生长函数pygame

如何解决蛇生长函数pygame

我是一名高中生,正在学习python,我想用python制作蛇类游戏,但是我无法编写蛇类生长函数,我已经尝试了很多方法,但仍然无法编写该部分游戏。请帮助

这是我的代码,没有太多内容

import pygame
import sys
from random import*
from math import*

pygame.init()

screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("Snake")
icon=pygame.image.load("icon.png")
pygame.display.set_icon(icon)
snakeimage=pygame.image.load("spaceship2.png")
bg=pygame.image.load("bg.png")
appleimage=pygame.image.load("apple.png")
gobg=pygame.image.load("gameover.png")
#******************************************game looP*************************************************
def game_loop():    

    restart_state="no"
    snakeheadx=150
    snakeheady=200
    snakeheadx_change=0
    snakeheady_change=0

    applex=randint(150,650)
    appley=randint(150,450)

    angle=0

    score_val=0

    font=pygame.font.Font('freesansbold.ttf',32)
    font2=pygame.font.Font('freesansbold.ttf',64)
    font3=pygame.font.Font('freesansbold.ttf',20)










    def out_of_boundries(x,y):
        screen.blit(gobg,(0,0))

    def score_text(x,y):
        score=font.render("score : "+str(score_val),True,(255,255,255))
        screen.blit(score,(x,y))

    def snake_head(x,y):
        rotated_image = pygame.transform.rotate(snakeimage,angle)
        screen.blit(rotated_image,(snakeheadx,snakeheady))
        
    def apple(x,y):
        screen.blit(appleimage,(applex,appley))

    def collide(applex,appley,snakex,snakey):
        collition=sqrt(pow(applex-snakeheadx,2)+pow(appley-snakeheady,2))
        if collition<50:
            return True
        else:
            return False


    while True:
        pygame.display.update()
        screen.fill((0,0))
        screen.blit(bg,0))
        snake_head(snakeheadx,snakeheady)
        apple(applex,appley)
        score_text(10,10)

        collition=collide(applex,snakeheadx,snakeheady)
        if collition:
            applex=randint(50,750)
            appley=randint(50,550)
            score_val+=1

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    snakeheadx_change=-4
                    snakeheady_change=0
                    angle=90

                if event.key == pygame.K_RIGHT: 
                    snakeheadx_change=(4)
                    snakeheady_change=(0)
                    angle=-90

                if event.key == pygame.K_UP:
                    snakeheadx_change=(0)
                    snakeheady_change=(-4)
                    angle=0
                    
                if event.key == pygame.K_DOWN:
                    snakeheadx_change=(0)
                    snakeheady_change=(4)
                    angle=180

                if event.key == pygame.K_RETURN:
                    if restart_state=="yes":
                        game_loop()

        if snakeheadx>=800 or snakeheadx<=-50:
            out_of_boundries(0,0)
            snakeheady_change=(0)
            snakeheadx_change=(0)
            restart_state="yes"
            
        if snakeheady>=600 or snakeheady<=-50:
            out_of_boundries(0,0)
            snakeheady_change=(0)
            snakeheadx_change=(0)
            restart_state="yes"
            
        snakeheadx+=snakeheadx_change
        snakeheady+=snakeheady_change


game_loop()

ive添加了此部分,但没有起作用:

        snakebodyimage=[]
        snakebodyx=[]
        snakebodyy=[]
        snakebodyx_change=[]
        snakebodyy_change=[]
        body_len=5
    
        for i in range(body_len):
            snakebodyimage.append(pygame.image.load("spaceship2.png"))
            snakebodyx.append(snakeheadx+10)
            snakebodyy.append(snakeheady)
            snakebodyx_change.append(snakeheadx_change)
            snakebodyy_change.append(snakeheady_change)
    
        def snake_body(x,y,i):
            screen.blit(snakebodyimage[i],y))
    
for i in range(body_len):
            snakebodyx[i]+=snakebodyx_change[i]
            snakebodyy[i]+=snakebodyy_change[i]
            
            snake_body(snakebodyx[i],snakebodyy[i],i)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。