小游戏实战-Python实现石头剪刀布+扫雷小游戏

简介: 小游戏实战-Python实现石头剪刀布+扫雷小游戏

我想说

  • 本文无华丽的词藻、无优美的代码,只有n个Python基础知识应用;
  • 本文的目的是通过写一些常见的Python小游戏,对Python一些基础知识比如字典、元组、列表、字符串、函数、类等进行回顾,帮助大家巩固Python基础;
  • 本文的小游戏写作思想其实已经非常成熟,网上也有很多例子,文章主要站在初学者的角度去认识和学习。
  • 哦,对了,文末给大家介绍个产品,建议看看哈。

    废话止于此

  • 不多说了,本文主要汇集一些常见Python小游戏,包括石头剪刀布、扫雷等;

  • 每个小游戏均会说下游戏规则、简单的思路、用到的知识点,并且会给出完整可运行的代码,以及效果展示等。

    石头剪刀布-入门必学游戏

    游戏规则

和生活中一样,石头、剪刀和布分别代表不同的手势,游戏规则如下:

  • 石头 VS 剪刀:石头胜;
  • 剪刀 VS 布:剪刀胜;
  • 布 VS 石头:布胜;
  • 手势一样:平局。

    实现思路

  • 用户从键盘获取输入数字,1:石头、2:剪刀、3:布;
  • 计算机保存1:石头、2:剪刀、3:布存入一个列表,并随机取值;
  • 用户先输入,然后计算机随机出数字,比对结果即可。

    示例代码

import random

'''
1:石头   2:剪刀  3:布;
'''

while True:
    computer = [1, 2, 3]
    user_input = int(input("请输入数字(1:石头、2:剪刀、3:1布):"))
    computer_result = random.choice(computer)

    if user_input == computer_result:
        result = "平局"
    elif (user_input == 1 and computer_result == 2) or \
        (user_input == 2 and computer_result == 3) or \
        (user_input == 3 and computer_result == 1):
        result = "你赢了"
    else:
        result = "计算机赢了"
    print(f"你的出的是:{user_input}")
    print(f"计算机出的是:{computer_result}")
    print(f"结果:{result}")

知识要点

  • python的random函数,是一个随机函数,这个工作中用到的比较多,主要是对一些随机数的处理;
  • while循环的使用;
  • 列表的使用;
  • 从键盘获取用户输入;
  • if语句的使用;
  • print格式化输出的使用。

注意:有兴趣的话,以上代码可以优化下,比如输入的不是1,2,3,那应该如何处理?

运行效果

请在此添加图片描述

扫雷-内网摸鱼必备游戏

游戏规则

  • 主要是进行打印输出;
  • 输出显示雷游戏区域;
  • 显示整个游戏区域,包含是雷和不包含雷的区域。

    实现思路

  • 打印游戏区域;
  • 创建雷;
  • 计算非雷格的邻居雷数;
  • 显示安全格子(即不包含雷的格子);
  • 组织游戏打印输出。

    示例代码

import random

class TestSweep():

    # 打印游戏区域
    def game_area(self, area):
        """
        :param area: 游戏区域
        :return:
        """
        for row in area:
            print(' '.join(row))

    # 创建地雷
    def create_mines(self, area, mine_num):
        """
        :param area: 游戏区域
        :param mines_count: 地雷个数
        :return:
        """
        while mine_num > 0:
            i = random.randrange(len(area))
            j = random.randrange(len(area))
            if area[i][j] != '*':
                area[i][j] = '*'
                mine_num -= 1

    # 计算不是雷的邻居雷数
    def not_mines_num(self, area, i, j):
        """
        :param area: 游戏区
        :param i:计数
        :param j:计数
        :return:
        """
        count = 0
        for x in range(i-1, i+2):
            for y in range(j-1, j+2):
                if 0<=x<len(area) and 0<=y<len(area[x]):
                    if area[x][y] == '*':
                        count += 1
        return count

    # 计算不包含雷的格
    def cells_num(self, area):
        """
        :param area: 游戏区
        :return:
        """
        for i in range(len(area)):
            for j in range(len(area[i])):
                if area[i][j] == ' ':
                    area[i][j] = str(self.not_mines_num(area, i, j))

    # 组织打印游戏
    def play_minesweeper(self, r, c, mines_num):
        """
        :param r: 行
        :param c: 列
        :param mines_num:雷数
        :return:
        """
        area = [[' ' for _ in range(c)] for _ in range(r)]
        self.create_mines(area, mines_num)
        self.game_area(area)
        self.cells_num(area)
        self.game_area(area)


if __name__ == "__main__":
    seweep = TestSweep()
    rows = 6
    cols = 6
    mines_num = 3
    seweep.play_minesweeper(rows, cols, mines_num)

知识要点

  • 类的应用;
  • 随机函数使用;
  • 列表、循环使用。

    运行效果

    请在此添加图片描述

    进阶练习-走迷宫(预留)

我们预留一个小作业,感兴趣的可以玩玩,游戏说明如下:

游戏规则

  • 打印输出一个迷宫,字母C表示人,通过输入a,d,w,s键来控制闯迷宫的左右上下方向;
  • 当人C遇到墙时,不能进行前行,只能走通的方向,模拟人走迷宫。

预期效果

  • 我们来看网友做的预期效果,大家可以试试;

请在此添加图片描述
请在此添加图片描述

总结

本文主要是简单的Python基础应用,基础是语言的核心,只有多练才能熟能生巧。文章内容浅显易懂,适合刚入门Python的你练练手。文中的小游戏其实网上也有很多的版本,建议学习的时候可以自行发挥,还有很多可以进行优化的地方,比如石头剪刀布的非指定数字的判断、扫雷游戏的互动(可以增加和电脑的互动),有兴趣的也可以看看预留的一个作业走迷宫。

目录
相关文章
|
22天前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
|
24天前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
59 4
|
1月前
|
数据采集 JavaScript 前端开发
Pyppeteer实战:基于Python的无头浏览器控制新选择
本文详细讲解了如何使用 Pyppeteer 结合爬虫代理高效采集小红书热点推荐信息。通过设置代理 IP、Cookie 和自定义 User-Agent,突破目标网站的反爬机制,实现标题、内容和评论的数据提取。文章结合代码示例与技术关系图谱,清晰展示从数据采集到分析的全流程,为复杂网站的数据获取提供参考。读者可在此基础上优化异常处理、并发抓取等功能,提升爬虫性能。
|
22天前
|
数据采集 JSON API
Python 实战!利用 API 接口获取小红书笔记详情的完整攻略
小红书笔记详情API接口帮助商家和数据分析人员获取笔记的详细信息,如标题、内容、作者信息、点赞数等,支持市场趋势与用户反馈分析。接口通过HTTP GET/POST方式请求,需提供`note_id`和`access_token`参数,返回JSON格式数据。以下是Python示例代码,展示如何调用该接口获取数据。使用时请遵守平台规范与法律法规。
|
2月前
|
缓存 安全 Android开发
Python实战:搭建短信转发器,实现验证码自动接收与处理
在移动互联网时代,短信验证码是重要的安全手段,但手动输入效率低且易出错。本文介绍如何用Python搭建短信转发器,实现验证码自动接收、识别与转发。通过ADB工具监听短信、正则表达式或ddddocr库提取验证码,并利用Flask框架转发数据。系统支持多设备运行,具备安全性与性能优化功能,适合自动化需求场景。未来可扩展更多功能,提升智能化水平。
145 1
|
2月前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
2月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
2月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
2月前
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
2月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。

热门文章

最新文章