diff --git a/snake.py b/snake.py index 537316e..4ba668b 100644 --- a/snake.py +++ b/snake.py @@ -1,5 +1,6 @@ import pygame from pygame import locals +import random # 初始化pygame,为使用硬件做准备 pygame.init() @@ -17,9 +18,14 @@ left = pygame.image.load('left.png') # 头 朝左 up = pygame.image.load('up.png') # 头 朝上 down = pygame.image.load('down.png') # 头 朝下 -x, y = 240, 120 -position = [(180, 90), (180, 120), (210, 120), (x, y)] +my_font = pygame.font.Font("neuropol.ttf",20) +apple_x = 270 +apple_y = 120 +x = 240 +y = 150 +score = 0 +position = [(180, 90), (210, 120), (240, 120), (x, y)] setheading = "right" snake_head = right @@ -51,9 +57,17 @@ while True: y -= 30 else: y += 30 + position.append((x, y)) - position.pop(0) - # 将背景图画上去 + if x == apple_x and y == apple_y: + num1 = random.randint(0,21) + num2 = random.randint(0,15) + apple_x = num1*30 + apple_y = num2*30 + else: + position.pop(0) + if x < 0 or x > 630 or y < 0 or y > 450: + exit() screen.blit(background, (0, 0)) # 将贪吃蛇的头画上去 screen.blit(snake_head, position[-1]) @@ -62,7 +76,12 @@ while True: screen.blit(body, position[i]) # 将果实画上去 - screen.blit(food, (360, 300)) + screen.blit(food, (apple_x, apple_y)) + + # 绘制分数 + info = "Score:"+str(score) + text = my_font.render(info,ture,(0,0,0)) + screen.blit(text,(540,10)) # 刷新画面 pygame.display.update() FPSCLOCK.tick(3) \ No newline at end of file diff --git a/zyr.py b/zyr.py new file mode 100644 index 0000000..1e7505e --- /dev/null +++ b/zyr.py @@ -0,0 +1,87 @@ +import pygame +from pygame import locals +import random + +# 初始化pygame,为使用硬件做准备 +pygame.init() + +# 创建一个窗口 +screen = pygame.display.set_mode((660, 480)) +FPSCLOCK = pygame.time.Clock() # pygame时钟,控制游戏速度(帧数) + +# 背景 +background = pygame.image.load('bg.png') +right = pygame.image.load('right.png') # 头 朝右 +food = pygame.image.load('apple.png') # 食物 苹果 +body = pygame.image.load('body.png') # 身体 +left = pygame.image.load('left.png') # 头 朝左 +up = pygame.image.load('up.png') # 头 朝上 +down = pygame.image.load('down.png') # 头 朝下 + +my_font = pygame.font.Font("neuropol.ttf") +apple_x = 270 +apple_y = 120 +x = 240 +y = 150 +score = 0 + +position = [(180, 90), (210, 120), (240, 120), (x, y)] +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_RIGHT and setheading != "left": + setheading = 'right' + snake_head = right + if event.key == locals.K_LEFT and setheading != "right": + setheading = 'left' + snake_head = left + if event.key == locals.K_UP and setheading != "down": + setheading = 'up' + snake_head = up + if event.key == locals.K_DOWN and setheading != "up": + setheading = 'down' + snake_head = down + + # 设置贪吃蛇的头部坐标 + if setheading == "right": + x += 30 + elif setheading == "left": + x -= 30 + elif setheading == "up": + y -= 30 + else: + y += 30 + + position.append((x, y)) + if x == apple_x and y == apple_y: + num1 = random.randint(0,21) + num2 = random.randint(0,15) + apple_x = num1*30 + apple_y = num2*30 + else: + position.pop(0) + if x < 0 or x > 630 or y < 0 or y > 450: + exit() + screen.blit(background, (0, 0)) + # 将贪吃蛇的头画上去 + screen.blit(snake_head, position[-1]) + # 将贪吃蛇的身体画上去 + for i in range(len(position)-1): + screen.blit(body, position[i]) + + # 将果实画上去 + screen.blit(food, (apple_x, apple_y)) + + # 绘制分数 + info = "Score:"+str(score) + text = my_font.render(info,ture,(0,0,0)) + screen.blit(text,(540,10)) + # 刷新画面 + pygame.display.update() + FPSCLOCK.tick(3) \ No newline at end of file