zoukankan      html  css  js  c++  java
  • 结对-贪吃蛇游戏-结对项目总结

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

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

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

  • 相关阅读:
    numpy百题冲关,pandas百题冲关
    mapreduce过程以及相关类总结
    mapreduce,数据结构和类型介绍
    精确度、召回率、混淆矩阵的关系
    小程序点击图片放大效果 单张图片 多张图片
    小程序动态添加class及调接口传递多个参数
    小程序for循环嵌套
    小程序富文本转换
    jquery函数加载及生成随机数
    微信小程序 swiper 显示图片计数 当前/总数
  • 原文地址:https://www.cnblogs.com/dawener/p/7773537.html
Copyright © 2011-2022 走看看