《结对-贪吃蛇-结对项目总结》

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.选题背景

         贪吃蛇是家喻户晓的益智小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言是很神秘的。我希望通过自己所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际项目中提高自己的编程能力。因此,我选定了这个题目。