【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 Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤