python自动玩消消乐_Python菜鸟快乐游戏编程_pygame

Python菜鸟快乐游戏编程_pygame(博主录制,2K分辨率):http://dwz.date/cfGs

da5e73de218667c2cde47cc62f884371.png

本文为原创,转载请注明,作者 231469242@qq.com,微信公众号:pythonEducation

作者Toby,持牌照消费金融公司模型专家,拥有国家算法相关专利,曾担任过国内最大医药数据中心负责人,和中科院有慢病数据挖掘项目合作。擅长python 机器学习,应用于医疗,英语,金融风控领域。

课程介绍
曾经我也沉迷游戏,连续玩十几个小时竞技游戏可以不吃饭。游戏只是别人写好程序,与其沉迷于他人设计好程序,为何不自己设计游戏,至少学会编程后,我们的月收入上万不是问题。于是便有了录制这部pygame菜鸟游戏编程教程动力。不要沉迷于游戏,我们人生还有许多事情要做,旅游,找到另一个伴侣,成立一个家庭,照顾父母。。。。

编程正在逐步改变世界,程序员不是搬砖的。但传统计算教育程面临枯燥乏味课程,让学生感到乏味。
兴趣是学习最好老师!此课程目的是激发大家对编程兴趣,给广大Python入门初学者带来无穷乐趣。
游戏涉及童年玩过经典小游戏,包括贪吃蛇,消消乐,俄罗斯方块,植物大战僵尸,扫雷等等。视频的参考资料可下载脚本。脚本已经编译好,可直接运行!
感谢妻子对家庭支持,让我周末和节假日有时间录制教学视频,我会继续加油!
Have Fun!

课程目录

章节1前言
课时1我的所有教学视频系列介绍
课时2如何联系作者和访问我的主页
课时3欢迎项目合作
课时4游戏脚本和素材下载地址
章节2Python基础环境搭建
课时5python官网
课时6Anaconda安装
课时7canopy下载安装
课时8python第三方包安装(pip和conda install)
课时9Python非官方扩展包下载地址
章节3python基础知识
课时10文件基本操作
课时11变量_表达式_运算符_值
课时12字符串
课时13程序基本构架0
课时14数据类型_函数_面向对象编程
课时15编程技巧和学习方法
课时16python2和3区别_编码基础
课时17更多python基础知识_网络教学资源推荐
课时18python异常处理
章节4pygame基础知识
课时19pygame官网介绍
课时20pygame安装
课时21pygame基础语法概述
章节5植物大战僵尸
课时22植物大战僵尸plant VS zombie游戏概述
课时23游戏帧数介绍pygame.time.clock
课时24pygame.init() quit()模块初始化和卸载
课时25pygame.locals调用常量更方便
课时26初始化游戏窗口pygame.display.set_mode()
课时27建立一个僵尸吃猫的游戏窗口
课时28加载僵尸图片pygame.image.load
课时29加载游戏声音pygame.mixer.music
课时30鼠标设置不可见pygame.mouse.set_visible
课时31加载植物角色到游戏界面
课时32图片加载别弄错了surface.blit VS pygame.display.update()
课时33游戏窗口输入文本pygame.font
课时34操作键盘,植物可以自由移动了
课时35冲突检测-植物碰到僵尸后咋整?
课时36植物可以发射子弹啦
课时37丧尸狂潮-随机生成一大波移动丧尸
课时38移除子弹击中后丧尸
课时39移除超越游戏界面的子弹
课时40丧尸吃掉植物,游戏结束了
课时41游戏角色可以不断丰富,新增黄帽子丧尸
章节6贪吃蛇游戏Snake
课时42pygame.display创建一个基本游戏框架
课时43event事件
课时44event_type.QUIT游戏结束按键事件
课时45RGB颜色填充
课时46draw.draw图形绘制
课时47pygame.KEYDOWN图形左右移动
课时48pygame.KEYDOWN移动对象
课时49每秒帧数_控制物体移动速度
课时50pygame.KEYUP键盘释放键
课时51pygame.K_UP,pygame.K_DOWN键盘上下移动物体
课时52边界障碍物设置和hardCode
课时53pygame.font.SysFont游戏文字交互
课时54gameloop和游戏结束优化
课时55random函数_随机生成一个红苹果
课时56苹果和蛇的触碰探测0
课时57蛇吃掉苹果后,生成新的苹果
课时58蛇吃掉苹果后,身体变长
课时59pygame.mixer.Sound游戏声音添加
课时60游戏标题和logo设置pygame.display.set_caption
章节7AI人工智能游戏开发(课外英语阅读)
课时61星际争霸人工智能发展史(课外英语阅读)
课时62星际争霸深度学习游戏开发指南(课外英语阅读)
章节8附录1_十大经典游戏python脚本下载
课时63经典游戏概述
课时64sprites and sounds
课时65大松鼠吃小松鼠
课时66推箱子box_pusher
课时67开心消消乐
课时68贪吃蛇
课时69俄罗斯方块Tetris
课时70奥赛罗棋reverse
课时71颜色拼图inkSpill
课时72赛车比赛
课时73扫雷(基于神经网络算法)
章节9附录2_AI人机大战游戏视频收录
课时74基于神经网络算法的马里奥游戏
课时75DOTA游戏 pain战队VS openAI
课时76DOTA游戏 中国明星战队VS openAI
课时77星际争霸AI(人族)VS人类(人族)
课时78星际争霸AI(人族)VS人类(虫族)
课时79韩国星际争霸大赛AI挑战多名明星选手
章节10诚谢开源的朋友
课时80诚谢开源圈朋友
课时81孙子兵法-不变应万变的秘密
课时82勇于探索,保持一颗好奇心

下图展示视频中几个经典童年游戏,植物大战僵尸

《植物大战僵尸》是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售。玩家通过武装多种植物切换不同的功能,快速有效地把僵尸阻挡在入侵的道路上。不同的敌人,不同的玩法构成五种不同的游戏模式,加之黑夜、浓雾以及泳池之类的障碍增加了游戏挑战性。

《植物大战僵尸》是一款极富策略性的小游戏。可怕的僵尸即将入侵,每种僵尸都有不同的特点,例如铁桶僵尸拥有极强的抗击打能力,矿工僵尸可以挖地道绕过种植在土壤表面的植物等。玩家防御僵尸的方式就是栽种植物。49种植物每种都有不同的功能,例如樱桃炸弹可以和周围一定范围内的所有僵尸同归于尽,而食人花可以吃掉最靠近自己的一只僵尸。玩家可以针对不同僵尸的弱点来合理地种植植物,这也是胜利的诀窍。游戏根据玩法不同分为五种游戏模式:冒险、生存、花瓶破碎者、小游戏、花园。加之黑夜、屋顶、浓雾以及泳池之类的障碍增加了其挑战性该游戏近乎永无止境。

ac1443a5bc401f423ccf662fafbcedbc.png

奥赛罗棋,人工智能AI范畴,英国每年有比赛

黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋或翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。黑白棋的棋盘是一个有8*8方格的棋盘。把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。黑白棋是19世纪末英国人发明的。直到上个世纪70年代一个日本人将其发展,借用莎士比亚名剧奥赛罗(othello)为这个游戏重新命名,也就是现在大家玩的黑白棋。为何借用莎士比亚名剧呢?是因为奥赛罗是莎士比亚一个名剧的男主角。他是一个黑人,妻子是白人,因受小人挑拨,怀疑妻子不忠一直情海翻波,最终亲手把妻子杀死。后来真相大白,奥赛罗懊悔不已,自杀而死。黑白棋就是借用这个黑人白人斗争的故事而命名。

游戏期间,位置比点数更重要!要着眼于长远利益,因为点数的领先很可能是暂时的。四个角上是必须争取占据的好位置,因为无法移开这些位置上的棋子。设法使自己走一步时,牵制着对手无法移动任何棋子!这样可以在一排中连续走两步。

当然我们没有必要用一生的时间去精通它。用python程序可以去模拟游戏,找到最佳下棋算法。

ba1452f6c9772500a52a4eff92c1a0a5.png

开心消消乐,手机玩的很high的爆款游戏

《开心消消乐》是一款乐元素研发的一款三消类休闲游戏。一天晚上,天空中掉下一颗神奇的豌豆种子,正好落在了梦之森林的村长屋附近,种子落地后吸收了池塘的水分,迅速成长,一夜之间变成参天大藤蔓…… 第二天早上,村民们醒来后看到巨大的藤蔓都惊呆了,聚在一起议论纷纷。有人说他似乎看到村长的房子在高耸入云的藤蔓上,房子似乎还在上升,有人号召说应该爬上去救村长,玩家需要爬到藤曼顶部救出村长。

9b2ee0b62767c777f675159b356c954e.png

色彩拼图游戏,AI范畴,基于算法,在规定时间内完成色彩统一,这需要一定思考能力哟。

6b13c4c1622556e42a090ec29d29b0ca.png

游戏编程模块pygame介绍

pygame是一组旨在编写视频游戏的Python模块。Pygame可以使用python语言创建功能齐全的游戏和多媒体程序。Pygame具有高度的可移植性,几乎可以在所有平台和操作系统上运行。Pygame至今已被下载了数百万次。Pygame非常流行的一个原因是免费。根据LGPL许可证发布的内容,您可以使用它创建开源,免费软件,共享软件和商业游戏。Pygame历史开始于2000年10月。六个月后发布了pygame 1.0版。pygame的目标是使可视化游戏编程变得简单。pygame是Python和SDL混合的产物。SDL由Sam Lantinga创建,与DirectX相比,SDL是用于控制多媒体的跨平台C库。它已用于数百种商业和开源游戏。

迫不及待的想用pygame写一个自己的游戏了吗?用pip install pygame安装此模块吧。

pygame官网

学员查询pygame模块基础语法最好方法是访问官方文档,网址为

https://www.pygame.org/docs/ref/surface.html

pygame模块最常用的对象包括:顶层pygame包,颜色, 显示,绘画,事件,字体,图片,键盘,鼠标,常量, 多媒体,矩形, 表面,时间,音乐

高级对象包括:游标,游戏杆, 图像蒙版,精灵,转换,计算机字体, 绘制形状,重叠式展示,像素阵列,像素复制,数学

其他对象包括:相机,音频CDROM控制,例子,事件和队列交互, 快速事件,剪贴板支持,测试,触摸,版本。

pygame 包是可供使用的最顶层的包。Pygame 被分成许多子模块,但是并不会影响程序使用 Pygame。

pygame常见函数如下:

pygame.init() — 初始化所有导入的 pygame 模块

pygame.quit() — 卸载所有导入的 pygame 模块

pygame.error() — 标准 pygame 异常模块

pygame.get_error() — 获得当前错误信息

pygame.set_error() — 设置当前错误信息

pygame.get_sdl_version() — 获得 SDL 的版本号

pygame.get_sdl_byteorder() — 获得 SDL 的字节顺序

pygame.register_quit() — 注册一个函数,这个函数将在 pygame 退出时被调用

pygame.encode_string() — 对 unicode 或字节对象编码

pygame.encode_file_path() — 将 unicode 或字节对象编码为文件系统路径

pygame常用对象为

pygame.Surface表面

pygame.draw绘图

pygame.font字体

pygame.image图片

pygame.sprite精灵

pygame.transform转换

pygame.event事件

pygame.time时间

pygame.mixer.Sound声音

Pygame语法比较多,且pygame不支持互动shell,不能一行行执行命令,因此最好学习方式是结合游戏实战编程。我们先用10行代码就完成第一个pygame游戏窗口,顺便了解pygame最主要的语法。

首先输入import pygame,sys导入具有所有可用pygame模块的包和系统模块。

pygame.display.set_mode()游戏窗口设置

初始化游戏窗口
set_mode(size=(0, 0), flags=0, depth=0, display=0) -> Surface

size参数是一对数字,代表宽度和高度。flags参数是其他选项的集合。

depth参数代表用于颜色的位数。颜色位数范围range is {8...32},通常最好不要传递depth参数。对于系统,它将默认为最佳和最快的颜色深度。如果您的游戏需要特定的颜色格式,则可以使用此参数控制深度。Pygame将模拟不可用的颜色深度,该深度可能很慢。

如果我们想要让游戏窗口在显示器上全屏展示,我们用pygame.FULLSCREEN对象。
windowSurface=pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT),pygame.FULLSCREEN)

颜色color

8eb2f5c56574d0089730544ffe82a55c.png

 pygame.locals

 此模块包含pygame使用的各种常量。它的内容会自动放置在pygame模块的命名空间中。但是,应用程序可以使用pygame.locals仅包含pygame.locals import *的pygame常量。

Event对象有一个名为type的成员变量(member variable,也叫作属性,attributes或properties),它告诉我们对象表示何种事件。针对pygame.locals模块中的每一种可能的类型,Pygame都有一个常量变量。第9行检查Event对象的type是否等于常量QUIT。记住,由于我们使用了from pygame.locals import *形式的import语句,主要输入QUIT就可以了,而不必输入pygame.locals.QUIT。

如果Event对象是一个停止事件,就会调用pygame.quit()和sys.exit()函数。pygame. quit()是pygame.init()函数的一种相反的函数,它运行的代码会使得Pygame库停止工作。在调用sys.exit()终止程序之前,总是应该先调用pygame.quit()。通常,由于程序退出之前,Python总是会关闭pygame,这不会真的有什么问题。但是,在IDLE中有一个bug,如果一个Pygame程序在调用pygame.quit()之前就终止了,将会导致IDLE挂起。

键盘按键

event.key==ord('a')
字母a-z:  ord('a')----ord('z'),  ord()内字母必须小写,否则出错。传递的是键盘对应小写字母的ASCII值

event.key==K_LEFT
箭头键arrow keys: K_LEFT, K_RIGHT, K_UP, K_DOWN.键盘右边的四个箭头按键
退出键ESC: K_ESCAPE

因为导入了from pygame.locals import*,所以我们可以用K_LEFT代替pygame.locals.K_LEFT

Table 20-1: Constant Variables for Keyboard Keys
Pygame Constant Variable Keyboard Key Pygame Constant Variable Keyboard Key
K_LEFT Left arrow K_HOME Home
K_RIGHT Right arrow K_END End
K_UP Up arrow K_PAGEUP PgUp
K_DOWN Down arrow K_PAGEDOWN PgDn
K_ESCAPE Esc K_F1 F1
K_BACKSPACE Backspace K_F2 F2
K_TAB Tab K_F3 F3
K_RETURN Return or Enter K_F4 F4
K_SPACE Space bar K_F5 F5
K_DELETE Del K_F6 F6
K_LSHIFT Left Shift K_F7 F7
K_RSHIFT Right Shift K_F8 F8
K_LCTRL Left Ctrl K_F9 F9
K_RCTRL Right Ctrl K_F10 F10
K_LALT Left Alt K_F11 F11
K_RALT Right Alt K_F12 F12

pygame.event

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值