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


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

    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 >=

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

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

  • 相关阅读:
    iOS自己主动化測试的那些干货
    RecylerView 的使用方法
    java 获取局域网中的全部主机名和IP地址
    C++项目參考解答:求Fibonacci数列
    tableView的用法具体解释
    【jQuery小实例】---3 凤凰网首页图片动态效果
    【jQuery小实例】---2自定义动画
    【jQuery小实例】js 插件 查看图片
    【url重写】
    【文件上传】
  • 原文地址:https://www.cnblogs.com/li-xiao-xi/p/7774686.html
Copyright © 2020-2023  润新知