18 11 05 继续补齐对python中的class不熟悉的地方 和 pygame 精灵
---恢复内容开始---
class game : #历史最高分----- 是定义类的属性
top_score =0 def __init__(self, player_name) : #是定义的实例属性 每个实例都要有他的格式
self.player_name = player_name @staticmethod #设置一个静态属性 它不访问类属性 与实例属性 谁来都一样
def show_help():
print("展示输入信息") @classmethod #设置一个类属性 需要访问 谁来结果也一样
def show_top_score(cls): # cls 表明访问的是自己的这个类
print("历史记录%d"%cls.top_score) def start_game (self): #设置一个实例属性 每个调用都有自己的名称 在 init 里 要输入初始参数
print("%s开始游戏啦"%(self.player_name)) #调用静态属性
game.show_help()
#调用类属性
game.show_top_score()
#调用实例属性 每个实例有着自己的参数 必须要传参 player1 = game("小明")
print(player1.player_name)
player1.start_game()
敲这个异常艰辛 因为在def 设置函数的时候 缩进打了两个 检查了蛮久才发现了这个问题 这也是平时有点觉得python没那么规范 没有好好打 制造出来的错误
代码小结
1 实例方法 方法内部需要访问的 实例属性
2 类方法 方法内部只需要访问到整个类的属性
3 静态方法 方法内部 两个都不用访问
class game : #历史最高分----- 是类的属性
top_score =0 def __init__(self, player_name) :
self.player_name = player_name #设置一个静态属性 它不访问类属性 与实例属性 谁来都一样
def show_help(cls):
print("展示输入信息") #设置一个类属性 需要访问 谁来结果也一样
def show_top_score(cls): # cls 表明访问的是自己的这个类
print("历史记录%d"%cls.top_score) def start_game (self): #设置一个实例属性 每个调用都有自己的名称 在 init 里 要输入初始参数
print("%s开始游戏啦"%(self.player_name)) #调用静态属性
#game.show_help()
#调用类属性
#game.show_top_score()
#调用实例属性 每个实例有着自己的参数 必须要传参 player1 = game("小明")
print(player1.player_name)
player1.start_game()
player1.show_top_score()
player1.show_help()
上面直接用调用实例属性 把两个@删了也能访问到 觉得这样也ok 所以实例属性很万能 三个都能防访问
---恢复内容结束---
class game : #历史最高分----- 是定义类的属性
top_score =0 def __init__(self, player_name) : #是定义的实例属性 每个实例都要有他的格式
self.player_name = player_name @staticmethod #设置一个静态属性 它不访问类属性 与实例属性 谁来都一样
def show_help():
print("展示输入信息") @classmethod #设置一个类属性 需要访问 谁来结果也一样
def show_top_score(cls): # cls 表明访问的是自己的这个类
print("历史记录%d"%cls.top_score) def start_game (self): #设置一个实例属性 每个调用都有自己的名称 在 init 里 要输入初始参数
print("%s开始游戏啦"%(self.player_name)) #调用静态属性
game.show_help()
#调用类属性
game.show_top_score()
#调用实例属性 每个实例有着自己的参数 必须要传参 player1 = game("小明")
print(player1.player_name)
player1.start_game()
敲这个异常艰辛 因为在def 设置函数的时候 缩进打了两个 检查了蛮久才发现了这个问题 这也是平时有点觉得python没那么规范 没有好好打 制造出来的错误
代码小结
1 实例方法 方法内部需要访问的 实例属性
2 类方法 方法内部只需要访问到整个类的属性
3 静态方法 方法内部 两个都不用访问
class game : #历史最高分----- 是类的属性
top_score =0 def __init__(self, player_name) :
self.player_name = player_name #设置一个静态属性 它不访问类属性 与实例属性 谁来都一样
def show_help(cls):
print("展示输入信息") #设置一个类属性 需要访问 谁来结果也一样
def show_top_score(cls): # cls 表明访问的是自己的这个类
print("历史记录%d"%cls.top_score) def start_game (self): #设置一个实例属性 每个调用都有自己的名称 在 init 里 要输入初始参数
print("%s开始游戏啦"%(self.player_name)) #调用静态属性
#game.show_help()
#调用类属性
#game.show_top_score()
#调用实例属性 每个实例有着自己的参数 必须要传参 player1 = game("小明")
print(player1.player_name)
player1.start_game()
player1.show_top_score()
player1.show_help()
上面直接用调用实例属性 把两个@删了也能访问到 觉得这样也ok 所以实例属性很万能 三个都能防访问
继续I我的 pygame 学习
精灵
封装自己的图像image 大小ract 速度speed
精灵组 把所有精灵 从放进去精灵组 同时进行
同时把所有精灵放进精灵组 一起调用update 方法更新位置
一起用 draw方法 来进行屏幕上的位置
import pygame class gamesprite(pygame.sprite.Sprite): #定义一个类 括号里面的是调用了pygame.sprite.Sprite (父) 类的内置方法 def __init__(self , image_name ,speed = 1): #传两个参数 其中speed默认为1 super().__init__() #用super调用父类的方法 self.image = pygame.image.load(image_name)
# 参数 = 调用pygame方法 传上去的的 变量名
self.rect = self.image.get_rect() #得到传上去图片的大小
self.speed = speed def update(self): self.rect.y += self.speed #图片的位置等于图片y的增加量
上面是精灵组的包 @ 来使用
import pygame
from plane_sprites import* #从plane文件中调用所有方法
pygame.init()
# 设置游戏的窗口
screen = pygame.display.set_mode((480, 700)) # 总游戏的运行窗口 只有一个
# 背景
background = pygame.image.load("./images/background.png")
screen.blit(background, (0, 0)) # 游戏窗口绘制完成 # 进行飞机窗口的绘制 hero = pygame.image.load("./images/me1.png")
screen.blit(hero, (200, 300)) # 英雄相对于界面的位置 # 定义飞机的初始位置
hero_rect = pygame.Rect(200, 500, 102, 126) #创建敌方的飞机
enemy = gamesprite("./images/enemy1.png")
enemy1 = gamesprite("./images/enemy1.png",2) #增加多个精灵 并更改速度
enemy3 = gamesprite("./images/enemy1.png",10)
#创建敌方的飞机组 让所有小飞机进入
enemy_group = pygame.sprite.Group(enemy,enemy1,enemy3)
# 对整个游戏进行刷新
pygame.display.update() clock = pygame.time.Clock()
# 游戏循环 while True:
clock.tick(60) # 游戏刷新的频率 for event in pygame.event.get():
if event.type == pygame.QUIT :
print("游戏退出.....")
pygame.quit()
exit() #python 中内置的关闭指令 if hero_rect.y <= 1:
hero_rect.y = 500
else:
hero_rect.y -= 1 # 更改游戏合飞机对于界面的位置 screen.blit(background, (0, 0))
screen.blit(hero, hero_rect)
#让精灵组调用两个方法
enemy_group.update() #让组中的所有精灵更新位置
enemy_group.draw(screen) #调用draw方法 把精灵组中所有精灵绘制在 screen 上面
pygame.display.update() pass pygame.quit()
18 11 05 继续补齐对python中的class不熟悉的地方 和 pygame 精灵的更多相关文章
- python中字符串使用需要注意的地方
1. r''的使用 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 2. u''的使用 引号之前加上字母u时,python会将 ...
- 简单探讨python中的语句和语法
python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了,对象需要靠表达式建立处理,而表达式往往存在于语句 ...
- (转)python中调用R语言通过rpy2 进行交互安装配置详解
python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753 python中调用R语言通过r ...
- vim里添加自动补齐插件,与python 函数补齐
参考 http://www.jb51.net/article/58009.htm 将 # cat ~/.vimrc filetype plugin on let g:pydiction_locati ...
- python 注释 与 windows 上用tab 自动补齐设置
python的注释 单行注释:用# 多行代码用:“”“ 中间为你要注释的解释 ”“” # 我是单行注释 我是一个#号 print("hello,word") "&quo ...
- 第11.18节 Python 中re模块的匹配对象
匹配对象是Python中re模块正则表达式匹配处理的返回结果,用于存放匹配的情况.老猿认为匹配对象更多的应该是与组匹配模式的功能对应的,只是没有使用组匹配模式的正则表达式整体作为组0. 为了说明下面的 ...
- 个人永久性免费-Excel催化剂功能第22波-Excel文件类型、密码批量修改,补齐PowerQuery短板
Excel的多工作薄.多工作表批量合并功能,Excel用户很多这方面的使用场景,也促使了各大Excel各大插件们都在此功能上有所开发,体验程度不一,但总体能够满足大多数的应用场景,本人之前也开发个单独 ...
- C 一个字符串有三段,第一段原样输出,第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段
C 一个字符串有三段,第一段原样输出.第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段 比如:输入abc 11 12.输出abc12121212 #include<stdio.h&g ...
- CentOS 7下的Vim自动补齐插件YouCompleteMe安装及配置
备注:现在对于 YouCompleteMe 的安装应采用更为简单的方法,即利用 Vundle 来安装这个插件.具体方法可见: Vundle 主页 YouCompleteMe 主页 而 .vimrc 的 ...
随机推荐
- 2020/2/21 fiyocms代码审计
0x00 前言 上午上了网课,一上午就装好了cms,下午还有网课,要是结束的早就进行审计. 解决了一下phpstudy使用过程中: Forbidden You don't have permissio ...
- CodeForces - 862B Mahmoud and Ehab and the bipartiteness(二分图染色)
题意:给定一个n个点的树,该树同时也是一个二分图,问最多能添加多少条边,使添加后的图也是一个二分图. 分析: 1.通过二分图染色,将树中所有节点分成两个集合,大小分别为cnt1和cnt2. 2.两个集 ...
- 禁用u盘再启用
将u盘量产为CDROM后,刷入ISO后需要重新插拔u盘才能访问新内容.此文展示的代码可以实现模拟这种行为,免插拔使windows重新读取cdrom. 网上参考资料有限,自行试验了很多种方法,终于成功了 ...
- Day4-T1
原题目 Hades 与 Dionysus 在狂饮后玩起了多米诺骨牌的小游戏. 现在桌上有 N 块多米诺骨牌,每块多米诺骨牌上半部分和下半部分上都有一个整数.每次翻转可让 一块多米诺骨牌上下翻转,即上下 ...
- Mysql 存储过程造测试数据
1.Mysql 存储过程造测试数据 -- 创建一个用户表 CREATE TABLE `sys_user` ( -- `id` CHAR (32) NOT NULL DEFAULT '' COMMENT ...
- 141-PHP类的抽象方法和继承实例(一)
<?php abstract class ren{ //定义人类 //定义成员属性 protected $name=''; protected $age=0; //定义成员方法 public f ...
- Java中调试与测试常用方法
一.断言 1.概述 根据之前的条件来对后续的结果进行预判. 2.在Java中,断言默认是不开启的,需要手动进行开启,只需添加参数-ea(enable assert的意思) 开启步骤: 选中项目路径,鼠 ...
- redis qps监控
最近有个客户反应redis的qps不准确,通过查看代码,发现我们的监控是调用的redis info里面的instantaneous_ops_per_sec 客户反应说自己压测了ns,但是从监控上看不到 ...
- my97datepicker实现日期改变立刻触发函数
<input type="text" class="Wdate" onclick="WdatePicker({onpicking:functio ...
- Spring注解——@Transactional
@Transactional 用于service实现类,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务.(未完待续)