我想说
- 本文无华丽的词藻、无优美的代码,只有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的你练练手。文中的小游戏其实网上也有很多的版本,建议学习的时候可以自行发挥,还有很多可以进行优化的地方,比如石头剪刀布的非指定数字的判断、扫雷游戏的互动(可以增加和电脑的互动),有兴趣的也可以看看预留的一个作业走迷宫。
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓