本文主要是介绍【python】day06 模块 模块的顺序 包 pygame之满天星 pygame之小弹球,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
01-模块
01-1:01-模块
01-2:XZ
02-模块的顺序
02-1:02-模块的顺序
02-2:oos
03-包
03-1:BAO
03-2:bao01
03-3:bao02
03-4:03-包
04-pygame之满天星
1.安装pygame
2.导入字体
3.创建项目
05-pygame之小弹球
05-1-一个球
05-2-五个球(进阶版)
本次代码目录一览:
01-模块
01-1:01-模块
'''
01-模块知识点:1.模块(Module)是以.py文件为单位2.模块中包含属性、方法、以及可执行的代码块等3.导入模块方式3.1 import 模块名3.2 from 模块名 import 功能名3.3 from 模块名 import *3.4 import 模块名 as 别名3.5 from 模块名 import 功能名 as 别名注意事项:1.导入的模块默认在site-package里面查找2.若要导入自定义模块则血药设置模块源3.若模块名和功能名相同,最后调用的是功能名from XZ import XZfrom 模块名 import 功能名'''
#1.1 导入模块名
# import XZ
# stu=XZ.Student()
# print("导入模块名:",stu.name)
#1.2 导入模块名和功能
from XZ import Student
stu = Student()
print("导入模块名和功能名:",stu.name)
#1.3 导入模块名的所有功能
# from XZ import *
# stu=Student()
# dog = Dog()
# xz=XZ()
#1.4 导入模块名设置别名
# import XZ as zpp
# stu=zpp.Student()
# dog=zpp.Dog()
# xz=zpp.XZ()
#1.5 导入模块名和功能名 功能名设置别名
# from XZ import Student as zy
# stu=zy()
# print("输出学生的信息:",stu.getName())
#
# from XZ import *
# #stu=Student()
# dog=Dog()
# print(testA(10,20))
# print(testB(10,20))
01-2:XZ
class Student(object):def __init__(self):self.name = "江苏师范大学"def getName (self):return self.name
class Dog (object):def __init__(self):self.name = "旺财"def getDogName(self):return self.name
class XZ(object) :pass
#可以设置模块源
__all__=['testA','XZ','Dog']
#可以设置模块源
def testA(a,b):return a+b
def testB(a,b):return a-b
02-模块的顺序
02-1:02-模块的顺序
'''
02-模块顺序
知识点:1.模块的搜索顺序1.1 当前目录(设为ROOT文件夹 Pycharm设置)1.2 PythonPath的每个目录中(Anaconda3默认目录是site-package)1.3 会搜索默认目录,会根据安全的目录自行搜索Lib>>>>site-package2.__all__控制功能被使用的顺序以及导入的内容注意事项:1.site-package:第三方模块默认的下载目录2.Lib是python环境下载目录3.当前目录是 用户自定义的目录4.自己文件名不要和已有模块名重复,否则导致模块功能无法使用5.__all__既可以添加函数名也可以添加class类名
'''
# from XZ import *
# 1.调用模块中的测试函数
# dag= Dog()
# print("测试模块:",testA(10,20))
# print("测试模块2:",testB(10,20))
# 2.调用模块的顺序
#不要用os作为模块名,因为python中有函数会重名,使代码运行不正常from XZ import Student
# from oos import Student
stu=Student()
print(stu)
stu.getName()
print(stu.getName())
02-2:oos
class Student(object):def __init__(self):self.name="江苏大学"def getName(self):return self.name# __all__=['Student']
03-包
包自己先建一个BAO
03-1:BAO
03-2:bao01
'''
包 模块 01
'''
print("BAO>>>01")def getInfo():print("当前是包-01模块")
03-3:bao02
'''
包 模块 02
'''
print("BA>>>02")def getInfo():print("当前是包-02模块")
03-4:03-包
'''
03-包注意事项:1.day06是一个包2.site-package 也是一包3.Lib也是一个包
包的主要目的是用于区分模块以及功能名
'''
'''
1.导入包 第一种方式
'''
import BAO.bao01
# 调用包>>>01模块>>>getInfo
# 虽然有下划线,但是可以执行
BAO.bao01.getInfo()# 1.1
from BAO import bao01
bao01.getInfo()# 1.2
from BAO.bao01 import getInfo
getInfo()'''
2.导入包的第二种方式
包的package里面有__init__py
设置 __all__列表
'''
# 注意这种方式的限制 只能用bao01
from BAO import *
b1 = bao01.getInfo()
# b2 = bao02.getInfo()# 单独导入其中一个模块
from BAO import bao02
bao02.getInfo()
04-pygame之满天星
1.安装pygame
打开cmd,输入 pip install pygame 后回车
如此,安装成功,可以使用了
2.导入字体
按照图示,随便复制一种,粘贴到我们的项目包中。
我的是微软雅黑,使用时输入msyhbd.ttc[其它没用到]
3.创建项目
满天星:
mystart.png snow.png 网上找
'''
04-MyStar
1.运行===>cmd===>pip install pygameLib>>>site-package>>>pygame配置好pygame
2.设置游戏窗口大小以及标题
3.设置窗口关闭模式
4.绘制小星星
5.窗口中绘制100颗小星星
6.绘制100颗五颜六色的星星
7.月亮
8.月食
9.动起来星星由左上角到右下角移动
'''
import pygame,sys,random
class MyStar(object):# 1.初始化函数def __init__(self):# 1.1 设置窗口大小 800*600尺寸self.screen=pygame.display.set_mode((800,600))# 1.2 设置星星或者雪花的坐标值self.xx=[random.randint(0,800) for i in range(100)]self.yy=[random.randint(0,600) for i in range(100)]# 1.3 设置图片#背景图self.background=pygame.image.load("mystart.png")self.snow=pygame.image.load("snow.png")# 1.4 设置月食坐标self.x=100self.y=100# 2. 设置程序主架构def menu(self):# 2.1 设置窗口标题 caption--说明文字,标题pygame.display.set_caption("满天星")# 2.2 死循环while True:#2.3 设置窗口背景颜色 RGB模式self.screen.fill((0,0,0))#2.4 调用业务执行函数self.action()#2.5 调用绘制函数self.paint()#2.6 延迟刷新时间pygame.time.delay(10)#2.7 设置屏幕pygame.display.update()#3. 业务执行函数def action(self):#3.1 获取pygame的监听事件for event in pygame.event.get():#3.2 判断退出if event.type==pygame.QUIT:sys.exit()#3.2 设置星星移动的坐标for i in range(100):self.xx[i]+=1self.yy[i]+=1if self.xx[i]>800:self.xx[i]=0if self.yy[i]>600:self.yy[i]=0#4.绘制函数def paint(self):#4.1 初始化pygame字体样式pygame.font.init()#4.2 设置具体的字体样式和大小#从系统中导一个字体进入包就可以了ft=pygame.font.Font("msyhbd.ttc",20)# 背景图 写在绘制图片的前面,则在最底层,不然会覆盖前面的图或者动画# blit(绘制的图片,(绘制的坐标))# 图片的缩放函数 pygame.transform.scale(缩放的图片,(缩放的尺寸)) transfrom转变scaleImg = pygame.transform.scale(self.background, (800, 600))self.screen.blit(scaleImg, (0, 0))'''绘制一颗小星星'''# #4.3 设置绘制的图案,一颗白色星星(绘制内容,使用,颜色(R,G,B))# starStr=ft.render("*",True,(255,255,255))# #4.4 设置图案位置(绘制对象,位置(x坐标,y坐标))【屏幕左上角为原点(0,0)】# #blit中文译名较多,都没有比较一致叫法。可能叫位偏移,位块传送,位块传输。选位偏移这个解释,因为要对象和坐标。# self.screen.blit(starStr,(100,100))'''绘制一百颗小星星'''# # for循环100次# for i in range(100):# # 4.3 设置绘制的图案,一颗白色星星(绘制内容,使用,颜色(R,G,B))# starStr=ft.render("*",True,(255,255,255))# # 4.4 设置图案位置(绘制对象,位置(x坐标,y坐标))【屏幕左上角为原点(0,0)】# self.screen.blit(starStr,(self.xx[i],self.yy[i]))'''绘制一百颗彩色的小星星,设置星星移动在action()'''# for循环100次# for i in range(100):# #RGB 三原色 红绿蓝# R = random.randint(0, 255)# G = random.randint(0, 255)# B = random.randint(0, 255)# # 4.3 设置绘制的图案,一颗白色星星(绘制内容,使用,颜色(R,G,B))# starStr = ft.render("*", True, (R,G,B))# # 4.4 设置图案位置(绘制对象,位置(x坐标,y坐标))【屏幕左上角为原点(0,0)】# self.screen.blit(starStr, (self.xx[i], self.yy[i]))'''绘制雪花'''for i in range(100):if 0<self.yy[i]<300:snowImg = pygame.transform.scale(self.snow, (15, 15))elif 300<self.yy[i]<450:snowImg = pygame.transform.scale(self.snow,(30,30))else:snowImg = pygame.transform.scale(self.snow, (40, 40))self.screen.blit(snowImg,(self.xx[i],self.yy[i]))'''绘制月亮'''# 月亮# self.screen=>窗口对象# (255,255,255)=>颜色# (100,100)=>圆心坐标# 50=>圆的半径# 0=>线宽,0代表的实心填充 非0代表的就是线宽pygame.draw.circle(self.screen, (0, 255, 255), (100, 100),50, 0)# 月食 用一个背景色的圆覆盖满⚪的一部分pygame.draw.circle(self.screen, (0,0,0), (80, 80), 50,0)if __name__=='__main__':star = MyStar()star.menu()
05-pygame之小弹球
05-1-一个球
'''
MyBall
1.设置主体架构
2.添加挡板对小球反弹2.1 挡板设置反弹(下边界判断碰撞一样)2.2 设置小球与边界的碰撞 修改小球的颜色 碰撞一次修改一次2.3 添加计分功能 绘制在界面上score:10挡板和小球碰撞一次 +10分小球掉落在挡板下方则 -10分2.4 根据分数 修改速度100-200 10200-300 8300-400 5400-500 3500以上 12.5 根据分数 修改挡板的宽度分数越高 挡板的宽度越窄100-200 180200-300 150300-400 120400-500 90500以上 50
'''
import pygame,sys,randomclass MyBall(object):# 1.初始化函数def __init__(self):# 1.1 设置窗口对象self.screen=pygame.display.set_mode((800,600))# 1.2 设置小球的坐标self.x=100self.y=100self.f=0# 1.3 设置挡板的尺寸self.banX=350self.banY=550self.banW=200self.banH=20# 1.4 设置小球的颜色值self.colors=[0,0,0]# 1.5 设置分数self.score=0# 1.6 设置速度self.speed=10# 2.设置主结构def menu(self):# 2.1 设置标题pygame.display.set_caption("MyBall")# 2.2 死循环while True:# 2.3 设置背景颜色self.screen.fill((255,255,255))# 2.4 调用业务self.action()# 2.5 调用绘制self.paint()# 2.6 设置延迟pygame.time.delay(self.speed)# 2.7 设置更新pygame.display.update()# 3.业务执行函数def action(self):# 3.1 循环遍历所有的监听事件for event in pygame.event.get():# 3.2 判断 如果代码块泛黄色则代表代码有问题if event.type==pygame.QUIT:sys.exit()# 3.5 鼠标的监听事件if event.type==pygame.MOUSEMOTION:# 获取鼠标的坐标值mx,my=pygame.mouse.get_pos()#限制点击有反应的范围if 0<=mx<=800-self.banW:self.banX=mx#碰撞过后,小球的飞行函数#3.3 根据飞行方向修改坐标值if self.f==0:self.x+=1self.y+=1if self.f==1:self.x+=1self.y-=1if self.f==2:self.x-=1self.y-=1if self.f==3:self.x-=1self.y+=1#挡板碰撞#3.4 根据坐标值修改飞翔方向if self.banX<=self.x<=self.banX+self.banW\and self.y>self.banY:# 修改小球的分数self.score+=10if self.f==0:self.f=1else :self.f=2# 修改小球的颜色self.colors[0]=random.randint(0,255)self.colors[1]=random.randint(0,255)self.colors[2]=random.randint(0,255)#边界if self.y>600:# 碰撞到下边界self.score-=10if self.f==0:self.f=1else:self.f=2if self.x>800:if self.f==1:self.f=2else :self.f=3if self.y<0:if self.f==2:self.f=3else:self.f=0if self.x<0:if self.f==3:self.f=0else:self.f=1#3.6 根据分数修改速度#3.7 根据分数修改挡板的宽度if 0<=self.score<100:self.speed=10self.banW=100elif 100<=self.score<300:self.speed=8self.banW=80elif 300<=self.score<400:self.speed=5self.banW=50elif 400<=self.score<500:self.speed=3self.banW=30elif self.score>=500:self.speed=1self.banW=10# 4.绘制函数def paint(self):# 4.1 绘制小球pygame.draw.circle(self.screen,tuple(self.colors),(self.x,self.y),10,0)# 4.2 绘制挡板# self.screen 窗口对象# (0,255,255) 颜色# (x,y,w,h) 矩形框左上角x,y点 w宽度 h高度# 0 实心的矩形框pygame.draw.rect(self.screen,(0,0,0),(self.banX,self.banY,self.banW,self.banH),0)# 4.3 设置小球分数绘制pygame.font.init()# 4.4 设置字体样式以及大小ft=pygame.font.Font("msyhbd.ttc",50)# 4.5 绘制内容scoreStr=ft.render("score=%d"%self.score,True,(255,0,0))# 4.5 绘制到窗口中self.screen.blit(scoreStr,(100,100))if __name__=='__main__':ball=MyBall()ball.menu()
05-2-五个球(进阶版)
说明文字前的序号有误,但是说明是正确的。(待改)
'''
多个小弹球
1.同时运行5个小弹球1.1 不同的飞行方向1.2 不同的颜色值1.3 碰撞到边 加分 10分1.4 根据分数修改速度
'''
import pygame,sys,randomclass MyBalls:# 1.初始化函数def __init__(self):# 1.1 窗口对象self.screen=pygame.display.set_mode((800,600))# 1.2 设置小球的坐标值self.x=[random.randint(0,800) for i in range(5)]self.y=[random.randint(0,600) for i in range(5)]# 1.3 设置小球的飞行方向self.f=[random.randint(0,3) for i in range(5)]# 1.4 设置小球的颜色值self.colors=[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]# 1.5 设置挡板的尺寸self.banX=100self.banY=550self.banH=20self.banW=100# 1.6 设置分数self.score=0# 1.7 设置速度self.speed=10# 2.主架构函数def menu(self):# 2.1 设置标题pygame.display.set_caption("MyBalls")# 2.2 死循环while True:# 2.3 设置背景颜色self.screen.fill((255,255,255))# 2.4 调用业务执行函数self.action()# 2.5 调用绘制函数self.paint()# 2.6 调用延时pygame.time.delay(self.speed)# 2.7 刷新屏幕pygame.display.update()# 3.业务执行函数def action(self):# 3.1 循环遍历所有的监听事件for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()# 3.5 鼠标的监听事件if event.type==pygame.MOUSEMOTION:# 获取鼠标的坐标值mx,my=pygame.mouse.get_pos()# 限制点击有反应的范围if 0<mx<800-self.banW:self.banX=mxfor i in range(5):# 碰撞过后,小球的飞行函数# 3.3 根据飞行方向修改坐标值if self.f[i]==0:self.x[i]+=1self.y[i]+=1if self.f[i]==1:self.x[i]+=1self.y[i]-=1if self.f[i]==2:self.x[i]-=1self.y[i]-=1if self.f[i]==3:self.x[i]-=1self.y[i]+=1# 边界if self.y[i]>600:self.score-=10if self.f[i]==0:self.f[i]=1else :self.f[i]=2if self.x[i]>800:if self.f[i]==1:self.f[i]=2else:self.f[i]=3if self.y[i]<0:if self.f[i]==2:self.f[i]=3else:self.f[i]=0if self.x[i]<0:if self.f[i]==3:self.f[i]=0else:self.f[i]=1# 挡板碰撞# 3.4 根据坐标值修改飞翔方向if self.banX<=self.x[i]<=self.banX+self.banW and self.y[i]>self.banY:self.colors[i]=[random.randint(0,255),random.randint(0,255),random.randint(0,255)]if self.f[i]==0:self.f[i]=1else:self.f[i]=2self.score+=10#3.7 根据分数修改挡板的宽度if 0 <= self.score < 200:self.banW = 180elif 200 <= self.score < 300:self.banW = 150elif 300 <= self.score < 400:self.banW = 120elif 400 <= self.score < 500:self.banW = 90elif 500 <= self.score:self.banW = 50#3.6 根据分数修改速度if 0 <= self.score < 200:self.speed = 10elif 200 <= self.score < 300:self.speed = 8elif 300 <= self.score < 400:self.speed = 5elif 400 <= self.score < 500:self.speed = 3elif 500 <= self.score:self.speed = 1# 4.绘制函数def paint(self):# 4.1 绘制小球for i in range(5):pygame.draw.circle(self.screen,tuple(self.colors[i]),(self.x[i],self.y[i]),10,0)pygame.draw.rect(self.screen,(0,0,0),(self.banX,self.banY,self.banW,self.banH),0)pygame.font.init()ft=pygame.font.Font("msyhbd.ttc",50)scoreStr=ft.render("score:%d"%self.score,True,(255,0,0))self.screen.blit(scoreStr,(100,100))if __name__=='__main__':balls=MyBalls()balls.menu()
这篇关于【python】day06 模块 模块的顺序 包 pygame之满天星 pygame之小弹球的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!