Commit 2aabd9ed by BellCodeEditor

save project

parent ef7dc539
apple.png

2.05 KB

bg.png

22.5 KB

body.png

1.4 KB

down.png

2.01 KB

left.png

2.07 KB

File added
right.png

2.05 KB

#整条蛇移动,列表的用法
#整条蛇移动,列表的用法
import pygame
from pygame import locals
pygame.init()
FPSCLOCK = pygame.time.Clock()
screen= pygame.display.set_mode((660,480))
background = pygame.image.load('bg.png')
right = pygame.image.load('right.png')
body = pygame.image.load('body.png')
down = pygame.image.load('down.png')
left = pygame.image.load('left.png')
up = pygame.image.load('up.png') #加载蛇身素材
x, y = 240, 120
snake = [(180, 90), (180, 120), (210, 120), (x, y)] #为蛇身做一个列表,
#print(snake) #显示一下snake坐标,用于区分列表在不同环节的变化情况
# x, y = 240, 320 #实验改变变量值是否改变列表
# print(snake)
# x,y如同两个装货卡车,我现在用x车和y车上的物品填充列表,将列表赋值给snake,在随后xy车上的货物改变后
# 列表里对应位置的货物不会改变的,只有再次赋值的时候才会从xy车上取更新的货物。
setheading = "right"
snake_head = right
while True:
for event in pygame.event.get():
if event.type == locals.QUIT:
exit()
if event.type == locals.KEYDOWN:
if event.key == locals.K_w and setheading !="down":
setheading = 'up'
snake_head = up
if event.key == locals.K_a and setheading !="right":
setheading = 'left'
snake_head = left
if event.key == locals.K_s and setheading !="up":
setheading = 'down'
snake_head = down
if event.key == locals.K_d and setheading !="left":
setheading = 'right'
snake_head = right
if setheading == 'up':
y -= 30
elif setheading == 'left':
x -= 30
elif setheading == 'right':
x += 30
else:
y += 30
# print(x)
# print(snake)#显示一下snake坐标,用于区分列表在不同环节的变化情况
# 随着x增加,在列表加尾去头,实现整体移动
snake.append((x, y))
snake.pop(0)
# print(snake)#显示一下snake坐标,用于区分列表在不同环节的变化情况
screen.blit(background, (0, 0))
screen.blit(snake_head, snake[-1])
# 如何渲染蛇身
# screen.blit(body, (210, 120))
# screen.blit(body, (180, 120))
# screen.blit(body, (180, 90))
# screen.blit(body,snake[-2])
# screen.blit(body,snake[-3])
# screen.blit(body,snake[-4])
#蛇身增加了怎么办,试着用遍历渲染蛇身
# screen.blit(body,snake[2])
# screen.blit(body,snake[1])
# screen.blit(body,snake[0])
# 可写成如下:
for i in range(len(snake)-1):
screen.blit(body, snake[i])
pygame.display.update()
FPSCLOCK.tick(3)
#通过print显示snake坐标,可以得到结论,只改变x值并不给相关列表元素赋值??append可以增加列表元素赋值
#蛇能动了之后,如何用按键控制蛇移动方向
import pygame
from pygame import locals
# 初始化pygame,为使用硬件做准备
pygame.init()
# 创建一个窗口
screen = pygame.display.set_mode((660, 480))
# 背景
background = pygame.image.load('bg.png')
right = pygame.image.load('right.png')
food = pygame.image.load('apple.png')
body = pygame.image.load('body.png')
down = pygame.image.load('down.png')
left = pygame.image.load('left.png')
up = pygame.image.load('up.png')
while True:
for event in pygame.event.get():
if event.type == locals.QUIT:
# 接收到退出事件后退出程序
exit()
# 将背景图画上去
screen.blit(background, (0, 0))
# 将贪吃蛇画上去
screen.blit(right, (240, 120))
# 将贪吃蛇的身体画上去
screen.blit(body, (210, 120))
screen.blit(body, (180, 120))
screen.blit(body, (180, 90))
# 将果实画上去
screen.blit(food, (360, 300))
# 刷新画面
pygame.display.update()
\ No newline at end of file
up.png

2.05 KB

Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment