zoukankan      html  css  js  c++  java
  • 初入pygame——贪吃蛇

    一、问题
    利用pygame进行游戏的编写,做一些简单的游戏比如贪吃蛇,连连看等,后期做完会把代码托管。

    二、解决

    1.环境配置

    python提供一个pygame的库来进行游戏的编写。首先是安装pygame,命令行:【pip  install pygame】

    2.初始化信息
    利用set_mode(大小)和set_caption(标题)来对界面进行初始化

    1  pygame.init()
    2  self.surface = pygame.display.set_mode((total_length * unit, total_width * unit))
    3  self.py.display.set_caption("贪吃蛇")    

    3.循环界面,事件处理
    利用一个while True来进行界面的循环,pygame.event.get()来获取事件,if进行退出判断,剩下的进行逻辑处理

    1    while True:
    2       for event in pygame.event.get():
    3           if event.type == QUIT:
    4              pygame.quit()
    5              sys.exit()

    4.键盘的事件处理

    利用事件的KEYWORD来处理键盘的事件,利用event.key可以处理对应的键盘信息event.key == ord('w') 和event.key == K_w,事件的处理效果一样。

    1  elif event.type == KEYDOWN:
    2    if event.key == K_UP or event.key == ord('w'):
    3       change_direction = 'up'
    4    if event.key == K_LEFT or event.key == ord('a'):
    5       change_direction = 'left'
    6    if event.key == K_DOWN or event.key == ord('s'):
    7       change_direction = 'down'
    8    if event.key == K_RIGHT or event.key == ord('d'):
    9       change_direction = 'right'

    5.画图与界面更新

    # 画图
            # 圆(位置,半径,大小)
            self.py.draw.circle(self.surface, self.color.green, (self.raspberry_position[0], self.raspberry_position[1]), int(self.unit / 2), int(self.unit / 2))
            # 矩形(位置,长宽)
            self.py.draw.rect(self.surface, self.color.red, Rect(self.raspberry_position[0], self.raspberry_position[1], self.unit, self.unit))
    # 界面更新
            # 更新界面
            self.py.display.flip()

    6.时钟的控制

    利用time.Clock()来控制游戏的速度,越大越快。

    1 # 时钟
    2 play_clock = pygame.time.Clock()
    3 self.clock = play_clock

    7.字体界面的布局

    1 game_over_font = self.py.font.Font(r'C:WindowsFontsarial.ttf', 72)
    2 game_over_surface = game_over_font.render('Game Over', True, self.color.gray)
    3 game_over_rect = game_over_surface.get_rect()
    4 game_over_rect.midtop = (self.length * 10, 10)

    三、成果展示

    四、总结
    初入pygame,记录一些基本的内容,后面再添加关于界面和事件更高级处理的内容



     

  • 相关阅读:
    C++STL——vector
    大数常用计算模板及例题
    在线算法&离线算法
    线段树——hdu1166敌兵布阵
    C++STL——堆栈
    C++STL——优先队列
    C++STL——队列
    图的建立——图的两种存储结构
    Manacher算法——最长回文子串
    HttpClient的几个实现类
  • 原文地址:https://www.cnblogs.com/future-dream/p/10776700.html
Copyright © 2011-2022 走看看