【python】day06 模块 模块的顺序 包 pygame之满天星 pygame之小弹球

2023-10-18 12:40

本文主要是介绍【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之小弹球的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232630

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数