《结对-贪吃蛇-结对项目总结》
1.编写目的
鉴于日常工作压力太大,闲暇的时间大多比较零碎,为了缓解紧张的情绪,获得更高工作效率,人们在日常的娱乐生活中,经常会玩一些单机版的益智类小游戏,它的特点是使用的内存小,又无需建立网络,更不会使人沉迷,获得了大多数人的喜爱。
2.实例说明
本实例将制作一个贪吃蛇游戏,读者可以根据该实例了解游戏的制作过程,达到举一反三的程度,为以后的开发工作,打下基础。
3.设计思路
这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。
4.程序结构说明
|
|
|
|
5.代码部分
使用pygame,用python语言来编写贪吃蛇
我之所以用python一方面是因为用python编写的次数比较多,另一方面是我曾经接触过贪吃蛇这款游戏并且觉得有趣,而且我也曾参与过这个游戏的编写,所以我和我的队友选择了贪吃色这款游戏。
通过进一步的研究,和探讨,我和队友认为大致流程是:
1、开始界面
2、运行游戏
3、退出游戏
代码如下:
# -*- coding: cp936 -*-
import sys,pygame
from pygame.locals import *
from itertools import count
from random import randrange
from pygame.locals import KEYDOWN, K_UP, K_RIGHT, K_DOWN, K_LEFT, QUIT,K_q
pygame.init()
clock = pygame.time.Clock()
size = width, height = 480, 480
screen = pygame.display.set_mode(size)
down,up,left,right =(0,10),(0,-10),(-10,0),(10,0)
die=False
snake_dir=down
font = pygame.font.Font(None, 14)
food = None
snake = [pygame.Rect(10, 10 + value * 10, 10, 10) for value in range(10)]
foreground, background = (255, 255, 255), (0, 0, 0)
for counter in count():
clock.tick(min(5 + (len(snake) / 4), 30))
event = pygame.event.poll()#事件监听
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP and snake_dir != down:
snake_dir = up
elif event.key == K_DOWN and snake_dir != up:
snake_dir = down
elif event.key == K_RIGHT and snake_dir != left:
snake_dir = right
elif event.key == K_LEFT and snake_dir != right:
snake_dir = left
elif event.key == K_q:
snake_dir, food, dead = down, None, False
snake = [pygame.Rect(10, 10 + value * 10, 10, 10)
for value in range(10)]
foreground, background = (255, 255, 255), (0, 0, 0)
if die:
continue
next = snake[-1].move(snake_dir)
if next in snake:
die=True
foreground, background = background, foreground
else:
snake.append(next)
if next == food :
food =None
else:
del snake[0]#snake[0]蛇尾坐标,snake[-1]蛇头的坐标
if food is None and counter % 40 == 0:
food = pygame.Rect(10*randrange(48), 10*randrange(48), 10,10)
screen.fill(background)
for rect in snake:
pygame.draw.rect(screen, foreground, rect)
if food :
pygame.draw.rect(screen, foreground, food)
if next.left <0:
next.left = width-10
if next.left >=width:
next.left=0
if next.top<0:
next.top=height-10
if next.top >=height:
next.top=0
surface = font.render(str(len(snake)), True, foreground)
screen.blit(surface, (0, 0))
pygame.display.flip()
6.选题背景
贪吃蛇是家喻户晓的益智小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言是很神秘的。我希望通过自己所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际项目中提高自己的编程能力。因此,我选定了这个题目。