PYTHON FOR KIDS:第18章, 完成火柴人逃生游戏

这章中move 函数有问题, 小人会直接往下掉, 有时间再查查代码看看啥原因. 没有完成后续加门的代码和编程小测试, 但不影响对面向对象编程的理解. # -*- coding: utf-8 -*- import tkinter import time class Game: """程序的主控者 由 __init__ 函数初始化游戏 由 mainloop 函数来做动画 """ def __init__(self): self.tk = tkinter.Tk() self.tk.title("Mr. Stick Man Races for the Exit") self.tk.resizable(0,0) self.tk.wm_attributes('-topmost', 1) # 窗口放在最前 self.canvas = tkinter.Canvas(master=self.tk, width = 500, height =500,\ highlightthickness=0) self.canvas.pack() self.tk.update() self.canvas_width = 500 self.canvas_height = 500 # 背景图形 self.bg = tkinter.PhotoImage(file="background.gif") w = self.bg.width() h = self.

PYTHON FOR KIDS:第17章, 开发火柴人游戏

源代码: # -*- coding: utf-8 -*- import tkinter import time class Game: """程序的主控者 由 __init__ 函数初始化游戏 由 mainloop 函数来做动画 """ def __init__(self): self.tk = tkinter.Tk() self.tk.title("Mr. Stick Man Races for the Exit") self.tk.resizable(0,0) self.tk.wm_attributes('-topmost', 1) # 窗口放在最前 self.canvas = tkinter.Canvas(master=self.tk, width = 500, height =500,\ highlightthickness=0) self.canvas.pack() self.tk.update() self.canvas_width = 500 self.canvas_height = 500 # 背景图形 self.bg = tkinter.PhotoImage(file="background.gif") w = self.bg.width() h = self.bg.height() # 创建背景 for x in range(5): for y in range(5): self.

PYTHON FOR KIDS:第16章, 开发火柴人游戏

源代码: # -*- coding: utf-8 -*- import tkinter import time class Game: """程序的主控者 由 __init__ 函数初始化游戏 由 mainloop 函数来做动画 """ def __init__(self): self.tk = tkinter.Tk() self.tk.title("Mr. Stick Man Races for the Exit") self.tk.resizable(0,0) self.tk.wm_attributes('-topmost', 1) # 窗口放在最前 self.canvas = tkinter.Canvas(master=self.tk, width = 500, height =500,\ highlightthickness=0) self.canvas.pack() self.tk.update() self.canvas_width = 500 self.canvas_height = 500 # 背景图形 self.bg = tkinter.PhotoImage(file="background.gif") w = self.bg.width() h = self.bg.height() # 创建背景 for x in range(5): for y in range(5): self.

PYTHON FOR KIDS:第15章, 火柴小人游戏的图形

假设为火柴小人游戏创建了一个文件夹 stickman 图片程序要求: 支持透明化(有时候也称为 alpha 通道), 可以让图片的一部分在屏幕上没有颜色,即透明, 这样两个图形交叉或接近时, 不会相互覆盖. GIMP(GNU Image Manipulation Program) 支持透明图形,网址: https://www.gimp.org/ 准备一个有透明背景的图形 文件 —> 新建 —> 设置宽 27, 高 30 像素 —> 确定 图层 —> 透明 —> 添加 Alpha 通道 选择 —> 全部 编辑 —> 剪切 以上操作得到一个深浅间隔的灰色的格子. 画6帧火柴人的图形 其中一帧的画法 工具 —> 图画工具 —> 铅笔, 大小调整为一个像素, 画图形中的一帧向右跑的样子. 文件 —> 另存为 stick-r1.gif, 如果不能保存为 gif格式, 可以保存后导出为 gif格式 画另外两帧 stick-r2.gif, stick-r3.gif 依次打开每个图形, 选择工具 —> 变换工具 —> 翻转 —> 水平翻转, 处理保存为 stick-l1.

PYTHON FOR KIDS:第14章, 完成你的第一个游戏:反弹吧,小球

源代码: # -*- coding: utf-8 -*- import tkinter import random import time # 创建画布 tk = tkinter.Tk() # 创建 Tk窗口 tk.title = "弹球游戏" # 设置窗口标题 tk.resizable(0,0) # (0, 0) 表示窗口大小在水平方向和垂直方向都不可调整 tk.wm_attributes("-topmost", 1) # 窗口放在其他所有窗口之前 # bd = 0, highlightthickness = 0 确保在画布之外没有边框 canvas = tkinter.Canvas(master=tk, width = 800, height = 800, bd = 0, highlightthickness = 0) canvas.pack() tk.update() # 创建一个球的类 class Ball: def __init__(self, canvas, paddle, color): self.canvas = canvas # 指定球在哪个画布上 self.

PYTHON FOR KIDS:第13章, 你的第一个游戏:弹球

示例代码: import tkinter import random import time # 创建画布 tk = tkinter.Tk() # 创建 Tk窗口 tk.title = "弹球游戏" # 设置窗口标题 tk.resizable(0,0) # (0, 0) 表示窗口大小在水平方向和垂直方向都不可调整 tk.wm_attributes("-topmost", 1) # 窗口放在其他所有窗口之前 # bd = 0, highlightthickness = 0 确保在画布之外没有边框 canvas = tkinter.Canvas(master=tk, width = 800, height = 800, bd = 0, highlightthickness = 0) canvas.pack() tk.update() # 创建一个球的类 class Ball: def __init__(self, canvas, color): self.canvas = canvas # 指定球在哪个画布上 # 在画布上绘制球, 并把球的ID 赋值给self.

PYTHON FOR KIDS:第12章, 用tkinter画高级图形

turtle 画图非常慢.游戏要求在计算机屏幕上快速绘图. tkinter 是另一种作图模块, 可以用来创建完整的应用程序.tkinter(也叫Tk接口)是Tk图形用户界面工具包标准的Python接口。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。Tk和Tkinter可以运行在大多数的Unix平台、Windows、和Macintosh系统。 示例1 import tkinter import tkinter.colorchooser import time import random # 窗口对象 Tk, Tk 是 tkinter模块最主要的类 # 画布对象 Canvas,创建时需要指定宽和高, 单位是像素 def hello(): print('hello!') def color_turple_to_color_code(color_turple): # 将一个类似 (255,255,255) 的元组转换为一个类似 #FFFFFF的颜色代码字符串 return_color = '#' for i in range(3): if color_turple[i]<16: # #FFFFFF 是16进制,小于十六的数字转换为 0X return_color = return_color + '0' + hex(color_turple[i])[2:] else: return_color = return_color + hex(color_turple[i])[2:] return return_color tk = tkinter.Tk() btn = tkinter.Button(master=tk, text = 'click me!

PYTHON FOR KIDS:第11章, 高级海龟作图

示例: 画不同形状. import turtle import time t = turtle.Pen() # 画正方形 for i in range(4): t.fd(100) t.rt(90) # 画八角星 time.sleep(2) t.reset() t.clear() for i in range(8): t.fd(300) t.rt(225) # 另一种星 time.sleep(2) t.reset() t.clear() for i in range(37): t.fd(300) t.rt(175) # 另一种星 time.sleep(2) t.reset() t.clear() for i in range(19): t.fd(300) t.rt(95) # 两种角度轮换的星 time.sleep(2) t.reset() t.clear() for i in range(18): t.fd(300) if i % 2 == 0: t.rt(175) else: t.rt(225) 示例: 画小汽车

PYTHON FOR KIDS:第10章, 常用的 Python 模块

使用 copy 模块来复制 copy 模块包含了制作对象的拷贝的函数. copy.copy 只会做浅拷贝, 即:只会做主对象的拷贝, 不会做主对象包含的对象的拷贝,比如不会copy list中的每个元素. copy.deepcopy 是深拷贝, 会拷贝所有的数据, 使得原对象和拷贝的对象互相不影响. import copy class Animal: def __init__(self, species, number_of_legs, color): self.species = species self.number_of_legs = number_of_legs self.color = color # 创建一个名为 dog_pink 的粉色的狗 dog_pink = Animal('dog', 4, 'pink') # 创建另一只名为 dog_pink_2 的粉色的狗, 这里用 copy 方法 dog_pink_2 = copy.copy(dog_pink) print(dog_pink.species) print(dog_pink_2.species) '''输出 dog dog ''' dog_pink.species = 'wolf' print(dog_pink.species) print(dog_pink_2.species) '''输出 wolf dog ''' # 创建一个对象列表 dog = Animal('dog', 4, 'yellow') pig = Animal('pig', 4, 'black') goose = Animal('goose', 2, 'white') animals = [dog, pig, goose] animals_copy = copy.

PYTHON FOR KIDS:第9章, Python的内建函数

Python 中的模块需要先引用, Python的内建函数 BIF 不需要先引用. bool 函数 bool() 函数只需要一个参数, 并根据参数值返回真或假, 即 True 或 False bool 是Boolean(布尔类型) 的简写. 对数字使用bool函数 对数字使用bool函数时, 如果数字是0, 返回 False, 其他数字返回 True 对字符串使用bool函数 字符串为空时返回 False, 字符串不为空时返回 True. 对None使用bool函数, 返回 False 对空的列表, 元组, 字典, 集合使用bool函数返回 False ,否则返回 True # abs() 函数返回绝对值 print('abs() 函数返回绝对值') print(abs(-10)) # 10 # 对数字使用bool函数 print('对数字使用bool函数') print(bool(0)) print(bool(0.0)) print(bool(-1)) # 对字符串使用 bool 函数 print('对字符串使用 bool 函数') print(bool('')) print((bool(' '))) # 对 None 使用 bool 函数 print('对 None 使用 bool 函数') print(bool(None)) # 对空的列表, 元组, 字典, 集合使用bool函数返回 False ,否则返回 True print('对空的列表, 元组, 字典, 集合使用bool函数返回 False ,否则返回 True') print(bool([])) t = () # 定义一个空的元组 print(bool(t)) d = dict() print(bool(d)) s = set() print(bool(s)) # bool 用于检测输入 year = input("输入你的出生年份\n") if not bool(year.