转自小五义大牛的pygame系列文章,很不错

pygame学习笔记(1)——安装及矩形、圆型画图

      pygame是一个设计用来开发游戏的python模块,其实说白了和time、os、sys都是一样的东东。今天开始正式学习pygame,下载地址:www.pygame.org。下载后安装完成即可,在pygame的学习中,我使用了spe编辑器,感觉还不错。

1、pygame窗口

      pygame绘制图形前,首先需要建立一个窗口,说来很简单,请看下面的代码,怎么样,是不是很简单。

复制代码
import pygame  #这句不用注释了吧,呵呵
pygame.init()  #模块初始化,任何pygame程序均需要执行此句

screencaption
=pygame.display.set_caption('hello world')#定义窗口的标题为'hello world'
screen
=pygame.display.set_mode([640,480]) #定义窗口大小为640*480
screen.fill([
255,255,255])#用白色填充窗口
复制代码

  2、窗口退出

      pygame有一个事件循环,不断检查用户在做什么。事件循环中,如何让循环中断下来(pygame形成的窗口中右边的插号在未定义前是不起作用的),常用的代码如下:

while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()

3、pygame中的颜色

       在screen.fill([255,255,255])这一语句中,已经看出,pygame使用的是RGB系统。纯绿色用[0,255,0],纯蓝色用[0,0,255],纯红色用[255,0,0]。如果不使用RGB记法,pygame还提供了一个命名颜色列表,也可以直接使用这些命名颜色。定义好的颜色句有600多个,可以在colordict.py文件中查看具体名称。使用命名列表时,首先要在程序最前面导入THECOLORS。

from pygame.color import THECOLORS

然后使用某个命名颜色:

pygame.draw.circle(screen,THECOLORS["red"],[100,100],30,0)

4、圆形

pygame.draw.circle()用来画圆形,具体包括五个参数:(1)画圆的表面,在本例中用screen创建了一个窗口,所以是画在screen表面上。(2)用什么颜色来画,如用红色[255,0,0]。(3)在什么位置画,[top,left]。(4)直径。(5)线宽,其中0表示完成填充。
pygame.draw.circle(screen,[255,0,0],[100,100],30,0)

5、矩形

pygame.draw.rect()用来创建一个矩形。Rect(left,top,width,height)用来定义位置和宽高,具体代码如下:

pygame.draw.rect(screen,[255,0,0],[250,150,300,200],0)

也可以用下面的定义方法

rect_list=[250,150,300,200]
pygame.draw.rect(screen,[255,0,0],rect_list,0)

或者

my_rect=pygame.Rect(250,150,300,200)
pygame.draw.rect(screen,[255,0,0],my_rect,0)

6、实例

    利用random模块随机生成大小和位置在表面上绘画,具体代码如下:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
import time
import randompygame.init()
screencaption=pygame.display.set_caption('hello world')
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
for i in range(10):zhijing=random.randint(0,100)width=random.randint(0,255)height=random.randint(0,100)top=random.randint(0,400)left=random.randint(0,500)pygame.draw.circle(screen,[0,0,0],[top,left],zhijing,1)pygame.draw.rect(screen,[255,0,0],[left,top,width,height],3)pygame.display.flip()
while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

转载请注明:小五义 http://www.cnblogs.com/xiaowuyi


pygame学习笔记(2)——从画点到动画

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

1、单个像素(画点)
利用pygame画点主要有三种方法:
方法一:画长宽为1个像素的正方形

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
screen=pygame.display.set_caption('hello world!')
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
pygame.draw.rect(screen,[0,0,0],[150,50,1,1],1) #画1*1的矩形,线宽为1,这里不能是0,因为1*1无空白区域。
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
复制代码

 

方法二:画个直径为1的圆

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
screen=pygame.display.set_caption('hello world!')
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
pygame.draw.circle(screen,[0,0,0],[150,200],1,1)
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
复制代码

 

方法三:这种方法并不是画上去的,而是改变了surface上某个点的颜色,这样看上去像是画了一个点screen.set_at()。另外,如果要得到某个像素的颜色,可以使用screen.get_at()。

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
screen=pygame.display.set_caption('hello world!')
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
screen.set_at([150,150],[255,0,0])#将150,150改为红色。
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
复制代码

2、连接多个点形成线

pygame.draw.lines()方法可以将多个点连接成为线。该方法有5个参数:surface表面、颜色、闭合线或者非闭合线(如果闭合为True,否则为False),点的列表,线宽。pygame.draw.lines(surface,[color],False/True,plotpoints,1)。下面的例子画出了一条马路,具体如下:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
def lineleft(): #画马路左边界
plotpoints=[]
for x in range(0,640):
y=-5*x+1000
plotpoints.append([x,y])
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
pygame.display.flip()
def lineright():#画马路右边界
plotpoints=[]
for x in range(0,640):
y=5*x-2000
plotpoints.append([x,y])
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
pygame.display.flip() 
def linemiddle():#画马路中间虚线
plotpoints=[]
x=300
for y in range(0,480,20):
plotpoints.append([x,y])
if len(plotpoints)==2:
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
plotpoints=[]
pygame.display.flip() pygame.init()
screen=pygame.display.set_caption('hello world!')
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
lineleft()
lineright()
linemiddle()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
复制代码

 

3、引用图像
在pygame中引用图像最简单的以夷伐夷是image函数。下面在马路的实例中,加入一辆汽车。首先pygame.image.load()函数从硬盘加载一个图像,并创建一个名为my_car的对象。这里,my_car是一个surface,不过是存在内存中,并未显示出来,然后用blit(块移)方法将my_car复制到screen表面上,从而显示出来。具体代码如下:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
def lineleft():
plotpoints=[]
for x in range(0,640):
y=-5*x+1000
plotpoints.append([x,y])
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
pygame.display.flip()
def lineright():
plotpoints=[]
for x in range(0,640):
y=5*x-2000
plotpoints.append([x,y])
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
pygame.display.flip() 
def linemiddle():
plotpoints=[]
x=300
for y in range(0,480,20):
plotpoints.append([x,y])
if len(plotpoints)==2:
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
plotpoints=[]
pygame.display.flip() 
def loadcar(): #载入car图像
my_car=pygame.image.load('ok1.jpg') #当前文件夹下的ok1.jpg文件
screen.blit(my_car,[320,320])
pygame.display.flip()pygame.init()
screen=pygame.display.set_caption('hello world!')
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
lineleft()
lineright()
linemiddle()
loadcar()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
复制代码

 

 素材:ok1.jpg

4、动画
     计算机动画实际上就是把图像从一个地方移动到另一个地方,同时几个连接动作交待显示就会产生逼真的效果。因此,在做动画中,最基本要考虑的因素主要是三个,一是时间,什么时间移动,多长时间变下一个动作,二是位置,从什么位置到什么位置,三是动作,前后两个动作的连续性。在这个例子中,因为车是俯视的,所以车轮转动实际是看不到的,所以不用考虑连续动作的变化,而是只考虑车的位置和多长时间移动即可。第一步pygame.time.delay()来实现时间延迟;第二步利用pygame.draw.rect()把原来位置的图像覆盖掉;第三步screen.blit()在新位置引入图像。下面的例子实现了汽车从驶入到驶出的过程。

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
def lineleft():plotpoints=[]for x in range(0,640):y=-5*x+1000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()
def lineright():plotpoints=[]for x in range(0,640):y=5*x-2000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()    
def linemiddle():plotpoints=[]x=300for y in range(0,480,20):plotpoints.append([x,y])if len(plotpoints)==2:pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)plotpoints=[]pygame.display.flip() 
def loadcar(yloc):my_car=pygame.image.load('ok1.jpg')locationxy=[310,yloc]screen.blit(my_car,locationxy)pygame.display.flip()if __name__=='__main__':pygame.init()screen=pygame.display.set_caption('hello world!')screen=pygame.display.set_mode([640,480])screen.fill([255,255,255])lineleft()lineright()linemiddle()while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()for looper in range(480,-140,-50):pygame.time.delay(200)pygame.draw.rect(screen,[255,255,255],[310,(looper+132),83,132],0)loadcar(looper)
复制代码
分类: python学习笔记,pygame学习笔记


pygame学习笔记(3)——时间、事件、文字

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

1、运动速率
    上节中,实现了一辆汽车在马路上由下到上行驶,并使用了pygame.time.delay(200)来进行时间延迟。看了很多参考材料,基本每个材料都会谈到不同配置机器下运动速率的问题,有的是通过设定频率解决,有的是通过设定速度解决,自己本身水平有限,看了几篇,觉得还是《Beginning Game Development with Python and Pygame》这里面提到一个方法比较好。代码如下,代码里更改的地方主要是main里的代码,其中利用clock=pygame.time.Clock()来定义时钟,speed=250.0定义了速度,每秒250像素,time_passed=clock.tick()为上次运行时间单位是毫秒,time_passed_seconds=time_passed/1000.0将单位改为秒,distance_moved=time_passed_seconds*speed时间乘以速度得到移动距离,这样就能保证更加流畅。

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
def lineleft():plotpoints=[]for x in range(0,640):y=-5*x+1000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()
def lineright():plotpoints=[]for x in range(0,640):y=5*x-2000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()    
def linemiddle():plotpoints=[]x=300for y in range(0,480,20):plotpoints.append([x,y])if len(plotpoints)==2:pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)plotpoints=[]pygame.display.flip() 
def loadcar(yloc):my_car=pygame.image.load('ok1.jpg')locationxy=[310,yloc]screen.blit(my_car,locationxy)pygame.display.flip()if __name__=='__main__':pygame.init()screen=pygame.display.set_caption('hello world!')screen=pygame.display.set_mode([640,480])screen.fill([255,255,255])lineleft()lineright()linemiddle()clock=pygame.time.Clock()looper=480speed=250.0while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()pygame.draw.rect(screen,[255,255,255],[310,(looper+132),83,132],0)time_passed=clock.tick()time_passed_seconds=time_passed/1000.0distance_moved=time_passed_seconds*speedlooper-=distance_movedif looper<-480:looper=480  loadcar(looper) 
复制代码

2、事件
    
    我理解的就是用来解决键盘、鼠标、遥控器等输入后做出什么反映的。例如上面的例子,可以通过按上方向键里向上来使得小车向上移动,按下向下,使得小车向下移动。当小车从下面倒出时,会从上面再出现,当小车从上面驶出时,会从下面再出现。代码如下。event.type == pygame.KEYDOWN用来定义事件类型,if event.key==pygame.K_UP这里是指当按下向上箭头时,车前进。if event.key==pygame.K_DOWN则相反,指按下向下箭头,车后退。

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
def lineleft():plotpoints=[]for x in range(0,640):y=-5*x+1000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()
def lineright():plotpoints=[]for x in range(0,640):y=5*x-2000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()    
def linemiddle():plotpoints=[]x=300for y in range(0,480,20):plotpoints.append([x,y])if len(plotpoints)==2:pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)plotpoints=[]pygame.display.flip() 
def loadcar(yloc):my_car=pygame.image.load('ok1.jpg')locationxy=[310,yloc]screen.blit(my_car,locationxy)pygame.display.flip()if __name__=='__main__':pygame.init()screen=pygame.display.set_caption('hello world!')screen=pygame.display.set_mode([640,480])screen.fill([255,255,255])lineleft()lineright()linemiddle()looper=480while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:if event.key==pygame.K_UP:looper=looper-50if looper<-480:looper=480pygame.draw.rect(screen,[255,255,255],[310,(looper+132),83,132],0)loadcar(looper)if event.key==pygame.K_DOWN:looper=looper+50if looper>480:looper=-480pygame.draw.rect(screen,[255,255,255],[310,(looper-132),83,132],0)loadcar(looper)
复制代码

3、字体及字符显示
    使用字体模块用来做游戏的文字显示,大部分游戏都会有诸如比分、时间、生命值等的文字信息。pygame主要是使用pygame.font模块来完成,常用到的一些方法是:
pygame.font.SysFont(None, 16),第一个参数是说明字体的,可以是"arial"等,这里None表示默认字体。第二个参数表示字的大小。如果无法知道当前系统中装了哪些字体,可以使用pygame.font.get_fonts()来获得所有可用字体。
pygame.font.Font("AAA.ttf", 16),用来使用TTF字体文件。
render("hello world!", True, (0,0,0), (255, 255, 255)),render方法用来创建文字。第一个参数是写的文字;第二个参数是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,无表示透明。
下面将上面的例子添加当前汽车坐标:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
def lineleft():plotpoints=[]for x in range(0,640):y=-5*x+1000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()
def lineright():plotpoints=[]for x in range(0,640):y=5*x-2000plotpoints.append([x,y])pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)pygame.display.flip()    
def linemiddle():plotpoints=[]x=300for y in range(0,480,20):plotpoints.append([x,y])if len(plotpoints)==2:pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)plotpoints=[]pygame.display.flip() 
def loadcar(yloc):my_car=pygame.image.load('ok1.jpg')locationxy=[310,yloc]screen.blit(my_car,locationxy)pygame.display.flip()
def loadtext(xloc,yloc):textstr='location:'+str(xloc)+','+str(yloc)text_screen=my_font.render(textstr, True, (255, 0, 0))screen.blit(text_screen, (50,50))if __name__=='__main__':pygame.init()screen=pygame.display.set_caption('hello world!')screen=pygame.display.set_mode([640,480])my_font=pygame.font.SysFont(None,22)screen.fill([255,255,255])loadtext(310,0)    lineleft()lineright()linemiddle()looper=480while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:if event.key==pygame.K_UP:looper=looper-50if looper<-132:looper=480if event.key==pygame.K_DOWN:looper=looper+50if looper>480:looper=-132loadtext(310,looper)screen.fill([255,255,255])                    loadtext(310,looper)lineleft()lineright()linemiddle()loadcar(looper)
复制代码

这个例子里直接让背景重绘一下,就不会再像1、2里面那样用空白的rect去覆盖前面的模块了。

 

分类: python学习笔记,pygame学习笔记


pygame学习笔记(4)——声音

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

pygame.mixer是一个用来处理声音的模块,其含义为“混音器”。游戏中对声音的处理一般包括制造声音和播放声音两部分,这里仅学习了播放声音部分。
1、pygame.mixer启动与初始化
pygame.mixer.init():mixer的初始化。程序中,使用时,一般放在最前面的几句代码中:
import pygame
pygame.init()
pygame.mixer.init()
2、播放声音片段wav文件
播放声音片段wav文件时,pygame.mixer使用Sound对象,格式为:
soundwav=pygame.mixer.Sound("filename.wav") #filename.wav文件名
soundwav.play()
在游戏中,往往用下面的代码来完成:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode([640,480])
pygame.time.delay(1000)#等待1秒让mixer完成初始化
soundwav=pygame.mixer.Sound("filename.wav") 
soundwav.play()
while 1:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

3、播放mp3、wma、ogg音乐文件
这里只是学习了一个mp3文件,如果非windows系统,那可以试试ogg文件。播放音乐文件主要使用pygame.mixer中的music模块,主要方法为:
pygame.mixer.music.load("filename.mp3")
pygame.mixer.music.play(n,start,stop)#第一个参数为播放次数,如果是-1表示循环播放,省略表示只播放1次。第二个参数和第三个参数分别表示播放的起始和结束位置。
完整的代码为:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode([640,480])
pygame.time.delay(1000)
pygame.mixer.music.load("filename.mp3")
pygame.mixer.music.play()
while 1:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

程序在运行时,一旦开始播放音乐,就会继续做下一件事情,也就是说,如果我们要播放两首歌,那么
pygame.mixer.music.load("filename1.mp3")
pygame.mixer.music.play()
pygame.mixer.music.load("filename2.mp3")
pygame.mixer.music.play() 
这段代码运行后,就会出现两首歌同时在播放的情况。实际中,我们常常需要播放完一首,再播放另一首,这样就需要利用pygame.mixer.music.get_busy()函数来判断,如果函数返回值为True那么说明目前处于忙的状态,否则返回 False。例如:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode([640,480])
pygame.time.delay(1000)
pygame.mixer.music.load("filename.mp3")
pygame.mixer.music.play()
soundwav=pygame.mixer.Sound("filename.wav") 
while 1:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()if not pygame.mixer.music.get_busy():soundwav.play()pygame.time.delay(5000)#等待5秒让filename.wav播放结束sys.exit()
复制代码

4、控制音量
pygame.mixer.music.set_volume()用来控制音量,取值范围为0-1.0的浮点数。0为最小值,1为最大值。
5、制作mp3播放器中遇到的问题
python+wxpython+pygame完全可以很容易方便的做出一个mp3播放器,但是在制作中遇到两个问题:
一是中文歌曲名的显示,通过搜索已经解决,加上# encoding='GBK'
二是pygame在播放mp3文件时,发现并不是所有的mp3文件都有播放,常常会出现播放声音不正确的情况,有时只是杂响。经过与python学习交流群(2)中的すeasyげ交流,すeasyげ提出位速128kbps的mp3文件可以播放,但从网上下了几个128kbps的mp3测试后,发现播放不正常的情况依然存在。不知道哪位大牛能解决这一问题,希望能把解决方法告知一下,谢谢。
因此,如果您打算写一个mp3的播放工具,python能做mp3播放的模块很多,这里,我觉得可以考虑使用mp3play模块,比较方便简单。目前版本为mp3play 0.1.15,具体下载地址为http://pypi.python.org/pypi/mp3play/。这里简单介绍一下其主要方法:
play(n,starms,endms):播放,第一个参数表示次数,第二、三个参数表示播放的起止位置,单位是毫秒。
stop(): 停止。
pause(), unpause(): 暂停和开始。
isplaying(): 判断是否正在播放,如果返回为TRUE,表示正在播放歌曲。
ispaused(): 判断是否为暂停,如果返回为TRUE,表示暂停。
seconds(): 返回mp3文件共多少秒,注意这里的单位是秒。
milliseconds(): 返回mp3文件共多少毫秒,注意这里的单位是毫秒。
mp3play首页上给出的例子为:

复制代码
#@小五义 http://www.cnblogs.com/xiaowuyi
import mp3play
filename = r'C:\music.mp3'#播放c盘下的music.mp3文件
clip = mp3play.load(filename)
clip.play()
import time
time.sleep(min(30, clip.seconds()))#如果mp3文件的长度小于30少时,全部播放完,否则仅播放30秒。
clip.stop()
复制代码

 

分类: python学习笔记,pygame学习笔记

pygame学习笔记(5)——精灵

转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

据说在任天堂FC时代,精灵的作用相当巨大,可是那时候只知道怎么玩超级玛丽、魂斗罗,却对精灵一点也不知。pygame.sprite.Sprite就是Pygame里面用来实现精灵的一个类,使用时,并不需要对它实例化,只需要继承他,然后按需写出自己的类就好了,因此非常简单实用。
一、什么是精灵
精灵可以认为成是一个个小图片,一种可以在屏幕上移动的图形对象,并且可以与其他图形对象交互。精灵图像可以是使用pygame绘制函数绘制的图像,也可以是原来就有的图像文件。
二、sprite中主要且常用的变量有以下几个:更多详细的见http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Sprite
self.image这个负责显示什么。如self.image=pygame.Surface([x,y])说明该精灵是一个x,y大小的距形,self.image=pygame.image.load(filename)说明该精灵调用显示filename这个图片文件。
self.image.fill([color]),负责对self.image着色,如self.image=pygame.Surface([x,y])
self.image.fill([255,0,0])
对x,y距形填充红色。
self.rect负责在哪里显示。一般来说,先用self.rect=self.image.get_rect()获得image距形大小,然后给self.rect设定显示的位置,一般用self.rect.topleft(topright、bottomleft、bottomright)来设定某一个角的显示位置。另外,self.rect.top、self.rect.bottom、self.rect.right、self.rect.left分别表示上下左右。
self.update 负责使精灵行为生效。
Sprite.add  添加精灵到group中去。
Sprite.remove 从group中删除
Sprite.kill 从groups中全部删除精灵
Sprite.alive 判断精灵是否属于groups

三、建立一个简单的精灵
所有精灵在建立时都是从pygame.sprite.Sprite中继承的。
(1)做一个精灵,绘制一个宽30、高30的距形,具体代码如下:

复制代码
class Temp(pygame.sprite.Sprite):def __init__(self,color,initial_position):pygame.sprite.Sprite.__init__(self)self.image = pygame.Surface([30,30])self.image.fill(color)self.rect=self.image.get_rect()self.rect.topleft=initial_position
复制代码


这里逐句进行一下分析,pygame.sprite.Sprite.__init__(self)完成初始化。self.image = pygame.Surface([30,30])定义显示30*30的一个距形surface。self.image.fill(color)用color来填充颜色。self.rect=self.image.get_rect()获取self.image大小。self.rect.topleft=initial_position确定左上角显示位置,当然也可以用topright、bottomrigh、bottomleft来分别确定其他几个角的位置。精灵的显示,在一个640*480大小的白色窗体[50,100]的位置绘制一个30*30大小的红色距形,完整代码如下:

复制代码
#小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
class Temp(pygame.sprite.Sprite):def __init__(self,color,initial_position):pygame.sprite.Sprite.__init__(self)self.image = pygame.Surface([30,30])self.image.fill(color)self.rect=self.image.get_rect()self.rect.topleft=initial_position
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
b=Temp([255,0,0],[50,100])
screen.blit(b.image,b.rect)
pygame.display.update()
while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

(2)做一个精灵,显示内容为某一图片,这里以前面用过的小车图片为例,代码如下:

复制代码
#小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
class Car(pygame.sprite.Sprite):def __init__(self,filename,initial_position):pygame.sprite.Sprite.__init__(self)self.image=pygame.image.load(filename)self.rect=self.image.get_rect()#self.rect.topleft=initial_positionself.rect.bottomright=initial_positionprint self.rect.rightscreen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
fi='ok1.jpg'
b=Car(fi,[150,100])
screen.blit(b.image,b.rect)
pygame.display.update()
while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

这段代码与(1)的不同之处在于self.image定义为pygame.image.load(filename),用来显示filename文件,本代码使用了ok1.jpg文件,并定义了小车右底角的显示位置是[150,100]。

三、学习精灵组
(1)使用精灵在屏幕上放多个图像,这种方法没用利用精灵组的概念,而是利用了list来生成每一个精灵。Cargroup用来存储不同位置的Car,screen.blit(carlist.image,carlist.rect)逐个显示每一个精灵。具体见代码:

复制代码
#小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
class Car(pygame.sprite.Sprite):def __init__(self,filename,initial_position):pygame.sprite.Sprite.__init__(self)self.image=pygame.image.load(filename)self.rect=self.image.get_rect()self.rect.bottomright=initial_positionscreen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
fi='ok1.jpg'
locationgroup=([150,200],[350,360],[250,280])
Cargroup=[]
for lo in locationgroup:Cargroup.append(Car(fi,lo))
for carlist in Cargroup:screen.blit(carlist.image,carlist.rect)
pygame.display.update()
while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

具体效果见图:

(2)使用精灵组来实现多个图像。上面精灵是存在一个列表中,很方便,就是有点不太好用。除了精灵,pygame还提供了精灵组,它很适合处理精灵列表,有添加,移除,绘制,更新等方法。具体如下:http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Sprite
Group.sprites 精灵组
Group.copy 复制
Group.add 添加
Group.remove 移除
Group.has 判断精灵组成员
Group.update 更新
Group.draw 位块显示
Group.clear - 绘制背景
Group.empty 清空
同样还是上面的这个例子,这里用精灵组来实现。

复制代码
#小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
pygame.init()
class Car(pygame.sprite.Sprite):def __init__(self,filename,initial_position):pygame.sprite.Sprite.__init__(self)self.image=pygame.image.load(filename)self.rect=self.image.get_rect()self.rect.bottomright=initial_position
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
fi='ok1.jpg'
locationgroup=([150,200],[350,360],[250,280])
Cargroup=pygame.sprite.Group()
for lo in locationgroup:Cargroup.add(Car(fi,lo))for carlist in Cargroup.sprites():screen.blit(carlist.image,carlist.rect)
pygame.display.update()
while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()
复制代码

两个例子都是在[150,200],[350,360],[250,280]三个位置显示三辆小车,不同之处第一个用的是list,第二个用的是精灵组。差别就在几句话上,一是Cargroup=pygame.sprite.Group()定义Cargroup为精灵组,二是Cargroup.add(Car(fi,lo))用add代替了append,三是for carlist in Cargroup.sprites()这句中逐个显示精灵,这里试了一下,直接用for carlist in Cargroup也是可以的。精灵组的代码是高度优化过了,常常比列表还快。插入和删除都是常见的操作,代码还可以避免内存在循环中反复消耗。
四、动画
利用精灵组做动画会显得比较方便,这里我们首先让上面的三辆小车运动起来。
(1)三辆小车以不同的速度前行,利用random.choice随机生成[-10,-1]之间的值作为速度让小车从下向上运动,并且当到达顶部时,再从底部出现。代码如下:

复制代码
#小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
from random import *
pygame.init()
class Car(pygame.sprite.Sprite):def __init__(self,filename,initial_position,speed):pygame.sprite.Sprite.__init__(self)self.image=pygame.image.load(filename)self.rect=self.image.get_rect()self.rect.topleft=initial_positionself.speed=speeddef move(self):self.rect=self.rect.move(self.speed)if self.rect.bottom < 0:   #当小车底部到达窗口顶部时,让小车从下面出来     self.rect.top=480
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
fi='ok1.jpg'
locationgroup=([150,200],[350,300],[250,200])
Cargroup=pygame.sprite.Group()
for lo in locationgroup:speed=[0,choice([-10,-1])]Cargroup.add(Car(fi,lo,speed))while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()pygame.time.delay(20)screen.fill([255,255,255])for carlist in Cargroup.sprites():carlist.move()screen.blit(carlist.image,carlist.rect)pygame.display.update()
复制代码

(2)可以通过左右键控制三辆小车的左右移动,按左键向左移动,当到达最左边时,不再移动,按右键向右移动,当到达最右边时,不再移动。具体代码如下:

复制代码
#小五义 http://www.cnblogs.com/xiaowuyi
import pygame,sys
from random import *
pygame.init()
class Car(pygame.sprite.Sprite):def __init__(self,filename,initial_position,speed):pygame.sprite.Sprite.__init__(self)self.image=pygame.image.load(filename)self.rect=self.image.get_rect()self.rect.topleft=initial_positionself.speed=speeddef move(self):self.rect=self.rect.move(self.speed)if self.rect.bottom < 0:        self.rect.top=480def moveleft(self):self.rect.left=self.rect.left-10if self.rect.left<0:self.rect.left=0def moveright(self):self.rect.right=self.rect.right+10if self.rect.right>640:self.rect.right=640
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
fi='ok1.jpg'
locationgroup=([150,200],[350,300],[250,200])
Cargroup=pygame.sprite.Group()
for lo in locationgroup:speed=[0,choice([-10,-1])]Cargroup.add(Car(fi,lo,speed))while True:for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:if event.key==pygame.K_LEFT:for carlist in Cargroup.sprites():carlist.moveleft()screen.blit(carlist.image,carlist.rect)if event.key==pygame.K_RIGHT:for carlist in Cargroup.sprites():carlist.moveright()screen.blit(carlist.image,carlist.rect)pygame.time.delay(20)screen.fill([255,255,255])for carlist in Cargroup.sprites():carlist.move()screen.blit(carlist.image,carlist.rect)pygame.display.update()
复制代码

 

分类: python学习笔记,pygame学习笔记


pygame学习笔记(6)——一个超级简单的游戏

转载请注明:@小五义  http://www.cnblogs.com/xiaowuyi

        学了这么长时间的Pygame,一直想写个游戏实战一下。看起来很简单的游戏,写其来怎么这么难。最初想写个俄罗斯方块,想了很长时间如何实现,想来想去,也没写出来,于是干脆下载别人的代码来读。后来,要想写一个帮助记忆的挖宝箱的游戏,结果也没完成。唯一完成了就是下面这个小人接金币的游戏,超级简单,通过左右键控制小人移动去接空中下来的金币,接住金币得5分,接不住游戏结束,金币速度会随着level的关数而越来越快。完成这段代码后,我依然觉得这段代码写得很差,确实也是自己对pygame只是掌握了皮毛,对surface、sprite这些理解的还不透彻。这里把代码写出来,有时间的大牛们可以帮助指点一下,让我也有所提高。

复制代码
# -*- coding: cp936 -*-
'''
@小五义 http://www.cnblogs.com/xiaowuyi
一个超级简单的游戏
左右键控制小人移动去接空中下来的金币,接住金币得5分,接不住游戏结束,金币速度会随着level的关数
而越来越快
'''
import pygame,sys,os,random
pygame.init()class rect():#画出小人def __init__(self,filename,initial_position):self.image=pygame.image.load(filename)self.rect=self.image.get_rect()self.rect.topleft=initial_positionclass goldrect(pygame.sprite.Sprite):#绘出金币def __init__(self,gold_position,speed):pygame.sprite.Sprite.__init__(self)self.image=pygame.image.load('image\\gold.png')self.rect=self.image.get_rect()self.rect.topleft=gold_positionself.speed=speeddef move(self):self.rect=self.rect.move(self.speed)def drawback(): #绘出背景图片my_back=pygame.image.load('image\\qi3.jpg') bakscreen.blit(my_back,[0,0])def loadtext(levelnum,score,highscore):#绘出成绩、level、最高分等my_font=pygame.font.SysFont(None,24)levelstr='Level:'+str(levelnum)text_screen=my_font.render(levelstr, True, (255, 0, 0))bakscreen.blit(text_screen, (650,50))highscorestr='Higescore:'+str(highscore)text_screen=my_font.render(highscorestr, True, (255, 0, 0))bakscreen.blit(text_screen, (650,80))scorestr='Score:'+str(score)text_screen=my_font.render(scorestr, True, (255, 0, 0))bakscreen.blit(text_screen, (650,110))    def loadgameover(scorenum,highscore):#绘出GAME OVERmy_font=pygame.font.SysFont(None,50)levelstr='GAME OVER'over_screen=my_font.render(levelstr, True, (255, 0, 0))bakscreen.blit(over_screen, (300,240))highscorestr='YOUR SCORE IS '+str(scorenum)over_screen=my_font.render(highscorestr, True, (255, 0, 0))bakscreen.blit(over_screen, (280,290))if scorenum>int(highscore):#写入最高分highscorestr='YOUR HAVE GOT THE HIGHEST SCORE!'text_screen=my_font.render(highscorestr, True, (255, 0, 0))bakscreen.blit(text_screen, (100,340))highfile=open('highscore','w')highfile.writelines(str(scorenum))  highfile.close()  def gethighscore(): #读取最高分if os.path.isfile('highscore'):highfile=open('highscore','r')highscore=highfile.readline() highfile.close() else:highscore=0return highscorebakscreen=pygame.display.set_mode([800,600])
bakscreen.fill([0,160,233])
pygame.display.set_caption('Dig!Dig!')
drawback()levelnum=1 #level
scorenum=0 #得分
highscore=gethighscore()#最高分
ileft=1  #记录向左移动步数,用来控制图片
iright=10 #记录向右移动步数,用来控制图片
x=100
y=450
filename='image\\1.png'
backimg_ren=rect(filename,[x,y])
bakscreen.blit(backimg_ren.image,backimg_ren.rect)
loadtext(levelnum,scorenum,highscore)
goldx=random.randint(50,580)
speed=[0,levelnum]
mygold=goldrect([goldx,100],speed) 
pygame.display.update()while True:if scorenum>0 and scorenum/50.0==int(scorenum/50.0):#当得分是50的倍数时修改levellevelnum=scorenum/50+1speed=[0,levelnum]for event in pygame.event.get():if event.type==pygame.QUIT:sys.exit()#make gold    
pressed_keys = pygame.key.get_pressed()if pressed_keys[pygame.K_LEFT]:#按下左键
drawback()  loadtext(levelnum,scorenum,highscore)if iright > 14 :iright=10iright=iright+1filename='image\\'+str(iright)+'.png'if x<50 :x=50else:x=x-10backimg_surface=rect(filename,[x,y])bakscreen.blit(backimg_surface.image,backimg_surface.rect)if pressed_keys[pygame.K_RIGHT]:#按下右键
drawback()loadtext(levelnum,scorenum,highscore)if ileft > 4 :ileft=0ileft=ileft+1filename='image\\'+str(ileft)+'.png'if x>560:x=560else:x=x+10backimg_surface=rect(filename,[x,y])bakscreen.blit(backimg_surface.image,backimg_surface.rect)drawback()loadtext(levelnum,scorenum,highscore)mygold.move()bakscreen.blit(mygold.image,mygold.rect) backimg_surface=rect(filename,[x,y])bakscreen.blit(backimg_surface.image,backimg_surface.rect)if mygold.rect.top>600:#判断金币是否着地,一但着地,游戏结束
        loadgameover(scorenum,highscore)if mygold.rect.colliderect(backimg_surface.rect):#判断金币是否与小人碰撞,如果碰撞表示小人接到金币scorenum+=5loadtext(levelnum,scorenum,highscore)goldx=random.randint(50,580)mygold=goldrect([goldx,100],speed) pygame.display.update()
复制代码

程序中用到的资源可从这里下载:文件名:gold.7z, 访问地址:http://pan.baidu.com/s/1i4s7b1r

分类: python学习笔记,pygame学习笔记



查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. c/c++进阶之路

    转自https://blog.csdn.net/kentyu001/article/details/48500553我的个人的拙见可以这样学C++: 第一步:首先入门可以从 国内出版的 教材入门 如  潭浩强的<<C程序设计>>  清华大学出版的<<C++程序设计>>等 能了解一些基本语法 会编写些简单的…...

    2024/4/27 19:58:33
  2. Java:获取字符串长度(length())

    在 Java 中,要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下:字符串名.length();例:在学生信息管理系统中对管理员密码有这样的规定,即密码长度必须大于 6 位且小于 12 位。因为密码太短容易被破解,太长的话又不容易记住。这就需要首先获取用户输…...

    2024/4/17 18:14:42
  3. 浅谈PCB电磁场求解方法及仿真软件

    商业化的射频EDA软件于上世纪90年代大量的涌现,EDA是计算电磁学和数学分析研究成果计算机化的产物,其集计算电磁学、数学分析、虚拟实验方 法为一体,通过仿真的方法可以预期实验的结果,得到直接直观的数据。“兴森科技-安捷伦联合实验室”经常会接到客户咨询,如何选择PCB电…...

    2024/4/27 13:29:17
  4. Tomcat配置强制https端口变成8443的解决办法

    明确: http默认端口 80 https默认端口 443 将redirectPort=”8443”改为 redirectPort=”443”service.xml<Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"URIEncoding="UTF-8"redirectPort="443&qu…...

    2024/4/27 15:24:38
  5. 2014中国黑客榜

    原帖见 http://bbs.pediy.com/showthread.php?t=188527 2014中国黑客榜(beta版)制作人:EBA9A81EE54F32A4B090993B24E140B8 黑客,英文hacker。精通计算机各类技术的计算机高手,泛指擅长IT技术的人群、计算机科学家。 最近受某机构所托搜集国内活跃黑客近况。本着客观专…...

    2024/4/27 14:00:08
  6. HTML5贪吃蛇代码

    首先声明,这是网上摘录的贪吃蛇完整代码,放在我博客上仅作学习用。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>贪吃蛇</title> <style type="text/css">*{mar…...

    2024/4/27 15:07:28
  7. tomcat中配置二级域名

    1、二级域名可以在域名提供商网站上进行解析设置 例如将二级域名设置为image解析方式设置方法如下:2、设置完域名解析后在tomcat配置文件tomcat\conf\server.xml中配置 <Host name="image.adc.com" appBase="webapps" unpackWARs="true" a…...

    2024/4/27 17:52:31
  8. 获取字符串的长度

    题目描述如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1否则如果字符 Unicode 编码 > 255 则长度为 2示例1输入复制hello world, 牛客, false输出复制17我的解答:function strLength(s, bUnicode255For1) { if(bUnicode255For1===true){ return s…...

    2024/4/27 20:04:17
  9. 硬件笔记(15)----射频天线知识

    近期要开始学习天线相关的知识了,大学的微波课程几乎都还给老师了o(╥﹏╥)o 要重新学习一下,在这里把资料做个记录,便于查找。一、理论基础[哔哩哔哩]台湾中华大学田教授 RF Amplifer Designe 视频课程[哔哩哔哩]台湾中华大学田教授射频基础课程[哔哩哔哩]西电梁昌洪微波技…...

    2024/4/26 13:19:25
  10. HTML---网页编程(1)

    前 言HTML需要和CSS还有JS一起用,才能提现强大。 所以,学了HTML。最好去学学CSS还有JS(JavaScript)☆静态页面和动态页面网站页面分为静态页面和动态页面两种 • 静态页面:有一个html页面文件保存在服务器上,浏览器要这个页面的时候服务器就把这个页面文件发给浏览器; …...

    2024/4/20 6:31:25
  11. eclipse下的tomcat内存设置大小

    eclipse下的tomcat内存设置大小在eclipse中设置,居然可以了,设置步骤如下:1.点击eclipse上的debug图标旁边的下拉箭头2.然后选择Run Configurations,3.系统弹出设置tomcat配置页面,在Argument中末尾添加参数中的VM arguments中追加:-Xms256M -Xmx512M -XX:PermSize=256m -…...

    2024/4/19 14:47:07
  12. Unity性能优化(三)-图形渲染优化

    Unity性能优化(三)-图形渲染优化这里有一篇写得很好的文章,请看这个: 【Unity技巧】Unity中的优化技术 Unity性能优化(三)-图形渲染优化 渲染流程简介 渲染问题的类型 处理CPU Bound 使用图形作业(Graphics Jobs)功能 减少向GPU发送的数据量 降低需要渲染的对象的数量…...

    2024/4/18 10:00:28
  13. Java获取字符串长度(length())

    在 Java 中,要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下:字符串名.length();例 1在学生信息管理系统中对管理员密码有这样的规定,即密码长度必须大于 6 位且小于 12 位。因为密码太短容易被破解,太长的话又不容易记住。这就需要首先获取用户输…...

    2024/4/19 11:38:00
  14. 求EGE写的贪吃蛇代码

    求用EGE写的贪吃蛇代码...

    2024/4/17 18:14:41
  15. Hackers top in China

    黑客,英文hacker。精通计算机各类技术的计算机高手,泛指擅长IT技术的人群、计算机科学家。 最近受某机构所托搜集国内活跃黑客近况。本着客观专业,权威可信的原则参考了国内从00年到最新的黑客榜单,以及通过微博、博客、网站的观察,线上线下翻山越岭的走访现整理出《20…...

    2024/4/17 18:14:11
  16. 内存溢出之Tomcat内存配置

    设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置 三、实例,以下给出1G内存环境下java jvm 的参数设置参考:JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -X…...

    2024/4/20 16:55:08
  17. 关于Altium Designer 16.1常见的一些操作指南--持续更新

    问题1.怎么设置多层PCB板? 答:点击Design->Layer Stack Manager,然后进行相应的层的配置,比如材料、厚度等等。 问题2. PCB中TOP PASTE和TOP SOLDER的区别? 答: 阻焊层:solder ,是指板子上要上绿油的部分;因为它是负片输出,所以实际上有solder 的部分实际效果并…...

    2024/4/24 7:49:13
  18. 3D轮廓检测技术讲解

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。CSDN视频网址:http://edu.csdn.net/lecturer/144 今天我们将…...

    2024/4/19 5:26:14
  19. 【前端笔记】js简单代码实现贪吃蛇~~~

    贪吃蛇是前端人入门且必须的技能。今天闲下来整理介绍一下~~~首先,先要确定贪吃蛇小游戏的需求:背景墙 确定行列创建蛇头蛇头移动蛇头变相创建实物碰撞检测增加身体食物消失 随机创建新的身体蛇头一起移动 我们首先通过创建一些div元素来生成网格轨道背景:然后创建蛇头(我…...

    2024/4/19 12:43:35
  20. 获取字符串长度

    /** 中文为2其余为1,返回字符串的长度 */public static int getStrLength(String str) {int strLen = 0;String chinese = "[\u0391-\uFFE5]";for (int i = 0; i < str.length(); i++) {String temp = str.substring(i, i + 1);if (temp.matches(chinese)) { // 判…...

    2024/4/19 20:57:51

最新文章

  1. 必应bing国内广告开户注册教程!

    今天搜索引擎广告成为企业推广产品与服务、提升品牌知名度的重要渠道之一。作为全球第二大搜索引擎&#xff0c;必应Bing凭借其高质量的用户群体和广泛的国际覆盖&#xff0c;为广告主提供了独特的市场机遇。在中国&#xff0c;虽然必应的市场份额相对较小&#xff0c;但对于寻…...

    2024/4/27 20:14:14
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Redis之缓存穿透、击穿、雪崩

    一、缓存穿透 缓存穿透是指在使用缓存系统时&#xff0c;特定的查询在缓存和数据库中都找不到结果&#xff0c;导致每次查询都要访问数据库&#xff0c;从而增加数据库的压力&#xff0c;降低系统的性能&#xff0c;若黑客利用此漏洞进行攻击可能压垮数据库。 当一个查询请求经…...

    2024/4/18 10:17:34
  4. 第十二届蓝桥杯省赛真题(C/C++大学B组)

    目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…...

    2024/4/26 22:13:34
  5. CSS3 高级- 复杂选择器、内容生成、变形(transform)、过渡(transition)、动画(animation)

    文章目录 一、复杂选择器兄弟选择器:选择平级元素的唯一办法属性选择器:1、通用:基本用不着,太泛了2、自定义:4种伪类选择器:1、目标伪类:2、结构伪类:3、元素状态伪类:4、伪元素选择器:应用于文字,使网页看起来想杂志5、否定伪类:选择器:not([本选择器的条件]) /*…...

    2024/4/27 18:00:07
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/26 21:56:58
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/26 22:01:59
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57