问题描述
我是一名高中生,正在学习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 (将#修改为@)