zoukankan      html  css  js  c++  java
  • 课后作业-结对编程项目总结

    安装pygame

    序流程分为三个部分:

    1、开始界面  

    2、运行游戏  

    3、退出游戏 

         贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受

    人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移

    动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过

    程中,撞到墙壁或身体交叉(蛇头撞到自己的身体)游戏结束。

    我选择贪吃蛇一是因为这是我童年玩的最多的一款游戏也是相对简单的游戏,我觉得这个游戏相对于贪吃蛇方向与移动的编写,

    更有意思的是游戏耐玩性,虽然我没有写出来等级的调级,但是我会在以后不断的更改游戏。为他提供精美的背景和更完美的

    游戏画面

    #!/usr/bin/env python
    import pygame,sys,time,random
    from pygame.locals import *
    # 定义颜色变量
    redColour = pygame.Color(255,0,0)
    blackColour = pygame.Color(0,0,0)
    whiteColour = pygame.Color(255,255,255)
    greyColour = pygame.Color(150,150,150)

    # 定义gameOver函数
    def gameOver(playSurface):
    gameOverFont = pygame.font.Font('arial.ttf',72)
    gameOverSurf = gameOverFont.render('Game Over', True, greyColour)
    gameOverRect = gameOverSurf.get_rect()
    gameOverRect.midtop = (320, 10)
    playSurface.blit(gameOverSurf, gameOverRect)
    pygame.display.flip()
    time.sleep(5)
    pygame.quit()
    sys.exit()

    # 定义main函数
    def main():
    # 初始化pygame
    pygame.init()
    fpsClock = pygame.time.Clock()
    # 创建pygame显示层
    playSurface = pygame.display.set_mode((640,480))
    pygame.display.set_caption('Raspberry Snake')

    # 初始化变量
    snakePosition = [100,100]
    snakeSegments = [[100,100],[80,100],[60,100]]
    raspberryPosition = [300,300]
    raspberrySpawned = 1
    direction = 'right'
    changeDirection = direction
    while True:
    # 检测例如按键等pygame事件
    for event in pygame.event.get():
    if event.type == QUIT:
    pygame.quit()
    sys.exit()
    elif event.type == KEYDOWN:
    # 判断键盘事件
    if event.key == K_RIGHT or event.key == ord('d'):
    changeDirection = 'right'
    if event.key == K_LEFT or event.key == ord('a'):
    changeDirection = 'left'
    if event.key == K_UP or event.key == ord('w'):
    changeDirection = 'up'
    if event.key == K_DOWN or event.key == ord('s'):
    changeDirection = 'down'
    if event.key == K_ESCAPE:
    pygame.event.post(pygame.event.Event(QUIT))
    # 判断是否输入了反方向
    if changeDirection == 'right' and not direction == 'left':
    direction = changeDirection
    if changeDirection == 'left' and not direction == 'right':
    direction = changeDirection
    if changeDirection == 'up' and not direction == 'down':
    direction = changeDirection
    if changeDirection == 'down' and not direction == 'up':
    direction = changeDirection
    # 根据方向移动蛇头的坐标
    if direction == 'right':
    snakePosition[0] += 20
    if direction == 'left':
    snakePosition[0] -= 20
    if direction == 'up':
    snakePosition[1] -= 20
    if direction == 'down':
    snakePosition[1] += 20
    # 增加蛇的长度
    snakeSegments.insert(0,list(snakePosition))
    # 判断是否吃掉了树莓
    if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:
    raspberrySpawned = 0
    else:
    snakeSegments.pop()
    # 如果吃掉树莓,则重新生成树莓
    if raspberrySpawned == 0:
    x = random.randrange(1,32)
    y = random.randrange(1,24)
    raspberryPosition = [int(x*20),int(y*20)]
    raspberrySpawned = 1
    # 绘制pygame显示层
    playSurface.fill(blackColour)
    for position in snakeSegments:
    pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))
    pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],20,20))

    # 刷新pygame显示层
    pygame.display.flip()
    # 判断是否死亡
    if snakePosition[0] > 620 or snakePosition[0] < 0:
    gameOver(playSurface)
    if snakePosition[1] > 460 or snakePosition[1] < 0:
    for snakeBody in snakeSegments[1:]:
    if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:
    gameOver(playSurface)
    # 控制游戏速度
    fpsClock.tick(5)

    if __name__ == "__main__":
    main()

      项目地址    https://gitee.com/songyx/codes/7xekuy4g9apd1h0frlbvq58

  • 相关阅读:
    解决后退网页已过期或刷新询问是否重新提交表单的问题
    一行代码获取中文星期
    单例模式弹出窗体实现
    JAVA实现冒泡排序
    关于BufferedWriter.write超过30W条数据写入过慢问题。
    Ibatis的简单介绍
    链接注入(便于跨站请求伪造)(AppScan扫描结果)
    会话标识未更新(AppScan扫描结果)
    跨站点脚本编制实例(AppScan扫描结果)
    深入Java核心 Java内存分配原理精讲
  • 原文地址:https://www.cnblogs.com/songyx/p/7773674.html
Copyright © 2011-2022 走看看