美文网首页
飞机大战项目知识点补充

飞机大战项目知识点补充

作者: code与有荣焉 | 来源:发表于2019-11-26 18:44 被阅读0次
    1. pygame效能很好,有很多是C语言写的;但是支持的声音格式很少,一般用.ogg的格式做背景音乐,用无压缩的.wav做音效(现在的版本好像也支持mp3等格式了)。

    2. 修改图像位置 (rect是位置,get_rect得到的)
      speed=[-2,1]
      rect.move(speed)

    3. 图像翻转(图像对象,水平翻转,垂直翻转)
      pygame.transform.flip(turtle,True,False)

    4. pygame.time.delay(10) # 延迟10毫秒

    5. 鼠标移动事件 buttons(左键,中间键,右键) rel(距离上一个点的位置)
      MouseMotion('pos':(x,y),'buttons':(0,0,0),'rel':(x,y))

    6. KeyUP 释放键盘按键
      KeyDown 按下键盘按键


      pygame中的所有事件.png
    7. if event.type == MOUSEBUTTONDOWN: # 鼠标点击
      if event.button == 1:
      print('1表示鼠标左键')
      if event.button == 2:
      print('1表示鼠标中间键')
      if event.button == 3:
      print('3表示鼠标右键')
      if event.button == 4: # 4和5不确定
      print('4表示鼠标滑轮向上')
      if event.button == 5:
      print('5表示鼠标滑轮向下')

    8. 获取行高 (font是对象)
      font.get_linesize()

    9. screen.fill(背景色) 可以这样操作用来清屏

    10. 导入所有的常量名(例如需要输入pygame.KEYDOWN时可以直接输入KEYDOWN了)
      from pygame.locals import *

    11. set_mode第二个参数(有图片介绍),用|连接多个


      set_mode第二个参数.png

    screen = pygame.display.set_mode((1024,768),FULLSCREEN|HWSURFACE)

    1. pygame.display.list_modes()打印当前显示器所有支持的分辨率
      例如[(1366,768),(1280,768),(1280,720),...]
      若要取得用户全屏时的分辨率可以用这种方法,取返回列表的第一个

    2. transform用法(有图片介绍)


      transform的方法.png
    3. get_rect()其实是获取位置
      pygame.mouse.get_pos()获取鼠标当前位置

    4. png和gif格式的可以透明化,jpg的不能透明化,所以导入png可以用convert_alpha,导入jpg只能用convert

    5. turtle.get_at(位置)可以获取此位置像素的颜色(turtle是对象)(0,0,0,透明度(0-255))
      turtle.set_at((i,j),颜色) 设置此位置像素颜色

    6. convert的图片可以用set_alpha(0-255)设置透明度,但是它是把整个图像加背景透明化。

    7. pygame.draw.rect(surface,color,rect,width=0) width=0表示用颜色填充
      绘制多边形 pygame.draw.ploygon(surface,color,pointlist,width=0) pointlist是各个顶点坐标
      绘制圆形 pygame.draw.circle(surface,color,pos,radius,width=0) pos是圆心
      绘制椭圆形 pygame.draw.ellipise(surface,color,rect,width=0) rect是限定矩形
      绘制弧线 arc(surface,color,rect,startangle,stop_angle,width=1) ep:pygame.draw.arc(screen,BLACK,(220,50,200,200),math.pi,math.pi*2,1)
      绘制一条线段 line(surface,color,start_pos,end_pos,width=1)
      绘制多条线段 lins(surface,color,closed,pointlist,width=1) closed为1的话表示画出的线段是首尾相连的 # 注意:width=0时线段也不能填充,因为是线段
      绘制抗锯齿线段 aaline(surface,color,startpos,endpos,blend=1) blend是指定是否混合阴影抗锯齿(一般使用)
      绘制多条抗锯齿线段 aalines(surface,color,closed,pointlist,blend=1)

    8. 播放音效用pygame.mixer.Sound()
      播放背景音乐用pygame.mixer.music

    9. Sound对象的方法(有图片介绍)


      Sound对象的方法.png
    10. music的一些方法(有图片介绍)


      music的一些方法.png
    11. pygame.mouse.set_visible(False) 设为False表示鼠标不可见

    12. pygame.time.set_timer(自定义事件,毫秒)设置自定义事件类型,每隔多少毫秒出现在事件队列中

    13. 要设置是否重复响应按下某个按键可以用pygame.key.set_repeat(delay,interval)
      其中delay参数指定第一次发送事件的延迟时间,interval参数指定重复发送事件的时间间隔,如果不带任何参数,表示取消重复发送事件

    14. Pyinstaller(python打包为exe文件):
      pip install pyinstaller
      在要打包的python文件的目录下执行如下命令:
      pyinstaller -F -i res\app.ico 你的python文件名.py
      其中res目录为你的项目文件下的资源目录,项目中用到的图片均放置在里面,其中app.ico是生成你的可执行文件的图标。
      拷贝资源文件目录res到生成目录下的dist目录下
      执行dist目录下的exe文件,打包完成。

    15. self.mask=pygame.mask.from_surface(self.image)
      并且在检测碰撞那里加上参数pygame.sprite.spritecollide(me,enemies,False,pygame.sprite.collide_mask)
      可以设置后碰撞检测的是非透明部分
      pygame.sprite.collide_mask(powerup,me)#检测两个精灵是否碰撞,若碰撞会返回True,否则返回False

    16. paused_rect.collidepoint(event.pos)可以检测pos是否在这个矩形范围内

    另:
    dns服务器是域名解析服务器
    tcp和udp区别(面试可能问):tcp可靠udp不可靠(udp容易丢包,可以用于音频)

    相关文章

      网友评论

          本文标题:飞机大战项目知识点补充

          本文链接:https://www.haomeiwen.com/subject/rxyywctx.html