玩游戏学Python12-布尔型与条件语句

1.布尔型数据

布尔数据是 Python 四种基本数据类型之一,用bool表示。用来表示逻辑上的"真"和"假"两种状态。它只有两个标准取值:True 和 False。其中 True 表示真,False 表示假。定义布尔类型数据变量的代码如图1所示。

图1 定义布尔类型变量的代码

2.比较运算符

在前面的内容中,提到了Python的算术运算符和赋值运算符,接下来我们看一下Python的第三种运算符-比较运算符。

比较运算符是一类用于判断两个对象之间关系的运算符。一般来说,它们比较变量的值,并通常返回布尔值True或False,表示比较命题是否成立。常用的比较运算符有">"(大于)、"<"(小于)、">="(大于等于)、"<="(小于等于)、"=="(是否相等)和"!="(是否不相等)等。使用比较运算符的代码如图2所示。

图2 使用比较运算符的代码

其中,变量a的值是1,b的值是2。a>b命题不成立,因此其值是False;a<b命题成立,因此其值是True,其他表达式以此类推。

注意1 判断两个值是否相等的关系运算符是"==",常用的赋值运算符是"="。

3.条件语句

Python的条件语句一种控制流语句,用于根据条件的真值,选择是否执行对应的代码块。它判断条件,当条件为真(True)时就执行对应代码块,条件为假(False)时,则不执行对应的代码块。其格式如下所示。

python 复制代码
if 条件:

  对应代码块

其中,代码块前要有空白字符表示代码有缩进。

使用if条件语句的代码如图3所示。

图3 使用if条件语句的代码1

其中,a的值是1,if条件语句的条件是a>0,该条件成立,其值是True,此时会执行if条件语句对应的代码块,通过print()打印正数。而图4所示的代码,因为其条件为False,不会执行代码块。

图4 使用if条件语句的代码2

4.通过条件语句实现汽车的环绕屏幕行驶

在《玩游戏学Python10-算术运算符应用2》中,实现了汽车的行驶,如图5所示。

图5 行驶的汽车

但是,从图5中可以看出,汽车会行驶到屏幕右侧之外,导致显示汽车。我们可以通过if语句,让汽车实现环绕屏幕行驶,也就是当汽车行驶到屏幕右侧之外后,继续在屏幕左侧显示汽车,实现环绕屏幕行驶,代码如图6所示。

图6 实现汽车环绕屏幕行驶的代码

其中,在update()函数中,第28-29行代码通过if条件语句实现了汽车环绕屏幕行驶。if语句的条件是判断汽车的左侧car.left是否大于等于屏幕的宽度WIDTH。如果汽车完全驶出屏幕右侧,那么这个条件就变为True,此时会执行对应的代码段,也就是第29行代码,将汽车的右侧car.right设置为0,相当于把汽车的位置设置到了屏幕最左侧,实现了环绕屏幕。以上代码运行的效果如图7所示。

图7 实现屏幕环绕的汽车

5.完整代码

实现汽车环绕屏幕行驶的完整代码如下所示。

python 复制代码
import pgzrun



WIDTH = 960

HEIGHT = 480



TITLE = '我的第一个pgzero游戏'*2

ICON = 'car'+'.png'



screen_color = 'green'



car = Actor('car', (250, HEIGHT/2))

car_speed = 5.0



font_pos = (150, HEIGHT//5)

font_size = 64

font_color = 'red'

def draw():

    screen.fill(screen_color)

    car.draw()

    screen.draw.text('Hello World'

                     , font_pos

                     , fontsize = font_size

                     , color = font_color)

   

def update():

    car.right += car_speed

    if car.left >= WIDTH:

        car.right = 0

   

pgzrun.go()
相关推荐
java_nnnn1 小时前
Spring Web MVC 入门:从一个 URL 到 Java 后端完整处理请求
java·前端·spring boot·spring
早点睡觉好了1 小时前
LangChain 源码入门 04:Runnable 如何统一调用、批处理、异步与流式接口
python·ai·langchain
Mikko71 小时前
fastjson 1.2.84 能在 JDK 7 上跑吗?实测:编译能过,一启动就 UnsupportedClassVersionError
java·后端·jdk·fastjson·安全漏洞
G018_star sky♬1 小时前
为什么java新建一个对象,需要obj o = new obj()这种写法
java·开发语言
丨白色风车丨1 小时前
LangChain Agent 从入门到实战:创建与调用参数全解析
前端·python·langchain
2601_962885721 小时前
如何用 Python 把多只股票对齐成一张宽表?
开发语言·python
驭渊的小故事4 小时前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
IT_Octopus9 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
Jmyd01239 小时前
Web端3D营销展厅技术实现路径:从素材上云到线索回流的数据链路
前端·3d·性能优化·三维数字化