博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用python简单的制作贪吃蛇小游戏
阅读量:2071 次
发布时间:2019-04-29

本文共 3212 字,大约阅读时间需要 10 分钟。

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取


贪吃蛇游戏是一款经典的益智游戏,既简单又耐玩。

回味童年经典,今天我们来一同学习贪吃蛇游戏的制作。

开发工具

  • python版本:3.6.8
  • 编辑器:pycharm

相关模块

import copyimport randomimport pygame

模块安装

pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com  pygame

实现效果

在这里插入图片描述

完整代码

import copyimport random# 游戏模块import pygame# 蛇的模型snake_list = [[10, 10]]# 500x500 背景大小# 食物的模型 随机生成x = random.randint(10, 490)y = random.randint(10, 490)food_point = [x, y]# 上下左右的方位 初始小蛇方向move_up = Falsemove_down = Falsemove_left = Falsemove_right = True# 画布# 初始化游戏组件pygame.init()# 设置画布大小screen = pygame.display.set_mode((500, 500))# 设置名字title = pygame.display.set_caption('贪吃蛇游戏')# 设置游戏时钟clock = pygame.time.Clock()while True:    # 电影 是一帧一帧 30fps    clock.tick(20)    # 游戏循环    # 把背景填充为白色    screen.fill([255, 255, 255])    """贪吃蛇移动 获取键盘事件"""    # 获取电脑的时间    # 确定移动方位    for event in pygame.event.get():        # 获取键盘事件        # print(event)        if event.type == pygame.KEYDOWN:            # 向下移动            if event.key == pygame.K_DOWN:                move_up = False                move_down = True                move_left = False                move_right = False            if event.key == pygame.K_UP:                move_up = True                move_down = False                move_left = False                move_right = False            if event.key == pygame.K_LEFT:                move_up = False                move_down = False                move_left = True                move_right = False            if event.key == pygame.K_RIGHT:                move_up = False                move_down = False                move_left = False                move_right = True    # 身子的移动    snake_len = len(snake_list) - 1    while snake_len > 0:        snake_list[snake_len] = copy.deepcopy(snake_list[snake_len - 1])        snake_len -= 1    # 蛇头的移动    if move_up:        snake_list[snake_len][1] -= 10        if snake_list[snake_len][1] < 0:            snake_list[snake_len][1] = 500    if move_down:        snake_list[snake_len][1] += 10        if snake_list[snake_len][1] > 500:            snake_list[snake_len][1] = 0    if move_left:        snake_list[snake_len][0] -= 10        if snake_list[snake_len][0] < 0:            snake_list[snake_len][0] = 500    if move_right:        snake_list[snake_len][0] += 10        if snake_list[snake_len][0] > 500:            snake_list[snake_len][0] = 0    # 绘制食物圆点    food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15)    # 循环    snake_rect = []    for snake_pos in snake_list:        snake_rect.append(pygame.draw.circle(screen, [255, 0, 0], snake_pos, 5))        # 如果食物与蛇发送了碰撞 碰撞检测方法        if food_rect.collidepoint(snake_pos):            snake_list.append(food_point)            # 重新生成食物            food_point = [random.randint(10, 490), random.randint(10, 490)]            break    # 贪吃蛇吃到了自己 应该结束游戏    # 取到蛇头    snake_head_rect = snake_rect[0]    count = len(snake_rect)    while count > 1:        # 蛇头与身子的任何一个点都有可能发生碰撞        if snake_head_rect.colliderect(snake_rect[count - 1]):            print('贪吃蛇吃到了自己,结束游戏')            pygame.quit()        count -= 1    # 把绘制的东西显示出来    pygame.display.update()

转载地址:http://swnmf.baihongyu.com/

你可能感兴趣的文章
如何实现字符串的反转及替换?
查看>>
Java面试题全集(上)
查看>>
Java面试题全集(中)
查看>>
值传递和引用传递
查看>>
什么情况下用+运算符进行字符串连接比调用StringBuilder对象的append方法连接字符串性能更好?
查看>>
怎么根据Comparable方法中的compareTo方法的返回值的正负 判断升序 还是 降序?
查看>>
理解事务的4种隔离级别
查看>>
常用正则匹配符号
查看>>
建议42: 让工具类不可实例化
查看>>
Java 异步机制与同步机制的区别
查看>>
hibernate的对象三种状态说明
查看>>
什么是N+1查询?
查看>>
Spring 接管 Hibernate 配置 延迟加载
查看>>
找出不在预定数组中的自然数
查看>>
String常见面试题
查看>>
直插,快排,堆排,归并排序的分析
查看>>
二叉树的各种操作(面试必备)
查看>>
oracle
查看>>
泛型与通配符详解
查看>>
BaseServiceImpl中的实现关键点
查看>>