rect

2d游戏开发学习笔记(3)——基于pygame的小游戏开发

耗尽温柔 提交于 2020-03-15 20:28:26
- 一.pygame基础知识 pygame有大量可以被独立使用的模块。 pygam.display-显示模块 pygame.keyboard-键盘模块 pygame.mouse-鼠标模块 二.pygame基础测试 1.首先安装pygame,打开cmd使用pip安装pygame: pip install pygame 2.在pycharm中导入pygame模块 3.设置窗口大小和窗口名称 参考代码如下: import pygame from pygame.locals import * import sys def hello_world(): pygame.init() pygame.display.set_mode((640,480)) pygame.display.set_caption("hello world") while True: for event in pygame.event.get(): if event.type==QUIT: pygame.quit() sys.exit() pygame.display.update() if __name__=="__main__": hello_world() 运行效果如图: 精灵的使用 介绍: Pygame 提供了两个类 pygame.sprite.Sprite —— 存储 图像数据 image 和 位置 rect

pygame之打飞机

一笑奈何 提交于 2020-03-15 14:46:06
游戏介绍 敌人落地前消灭 消灭加分 否则结束 代码 ''' @Author: your name @Date: 2020-03-15 12:40:53 @LastEditTime: 2020-03-15 12:59:20 @LastEditors: Please set LastEditors @Description: In User Settings Edit @FilePath: \3.14\feiji.py ''' import pygame from sys import exit from pygame.locals import * import random SCREEN_WIDTH=480 SCREEN_HEIGHT = 800 TYPE_SMALL=1 TYPE_MIDDLE=2 TYPE_BIG=3 class Bullet(pygame.sprite.Sprite): def __init__(self, bullet_img, init_pos): pygame.sprite.Sprite.__init__(self) self.image = bullet_img self.rect = self.image.get_rect() self.rect.midbottom = init_pos self.speed = 10 def move(self):

POJ1691-Painting A Board

爷,独闯天下 提交于 2020-03-15 13:16:03
载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6727035 大致题意: 墙上有一面黑板,现划分为多个矩形,每个矩形都要涂上一种预设颜色C。 由于涂色时,颜料会向下流,为了避免处于下方的矩形的颜色与上方流下来的颜料发生混合,要求在对矩形i着色时,处于矩形i 上方直接相邻位置 的全部矩形都必须已填涂颜色。 在填涂颜色a时,若预设颜色为a的矩形均已着色,或暂时不符合着色要求,则更换新刷子,填涂颜色b。 注意: 1、 当对矩形i涂色后,发现矩形i下方的矩形j的预设颜色与矩形i一致,且矩形j上方的全部矩形均已涂色,那么j符合填涂条件,可以用 填涂i的刷子对j填涂,而不必更换新刷子。 2、 若颜色a在之前填涂过,后来填涂了颜色b,现在要重新填涂颜色a,还是要启用新刷子,不能使用之前用于填涂颜色a的刷子。 3、 若颜色a在刚才填涂过,现在要继续填涂颜色a,则无需更换新刷子。 4、 矩形着色不能只着色一部分,当确认对矩形i着色后,矩形i的整个区域将被着色。 首先要注意输入数据,每个矩形信息的输入顺序是 y x y x c,而不是 x y x y c 若弄反了x y坐标怎样也不会AC的..... 拓扑思想+DFS 方法还是很直观的,把每个矩形看作一个点,处于黑板最上方的矩形i入度为0,然后从矩形i出发

pygame精灵测试

强颜欢笑 提交于 2020-03-15 12:31:16
介绍 pygame.sprite.Sprite是Pygame里面 用来实现精灵的一个类,使用时并不需要 对它实例化,只需要继承它, 然后按需写 出自己的类,因此非常简单实用。 精灵图 代码 ''' @Author: your name @Date: 2020-03-15 11:45:46 @LastEditTime: 2020-03-15 12:09:16 @LastEditors: Please set LastEditors @Description: In User Settings Edit @FilePath: \3.14\精灵.py ''' import pygame from pygame.locals import * class MySprite(pygame.sprite.Sprite): def __init__(self,target): pygame.sprite.Sprite.__init__(self) self.sprite_surface=target self.image=None self.master_image=None self.rect=None self.topleft=0,0 self.frame=0 self.old_fram=-1 self.fram_width=1 self.fram_height=1 self.first

Delphi GDI对象之绘制位图

邮差的信 提交于 2020-03-13 14:07:50
绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难,然而如几次所见到的那样,绘制位图非常容易。TCanvas类具有几种方法绘制位图,最常用的方法是Draw方法,这种方法只是在画布上指定位置绘制位图。用户已经见过几个这样的例子。下面是简短的例子。 procedure TForm1.btn1Click(Sender: TObject); var Bitmap: TBitmap; begin Bitmap := TBitmap.Create; Bitmap.LoadFromFile('type.bmp'); Canvas.Draw(0, 0, Bitmap); Bitmap.Free; end; 这段代码创建了一个TBitmap对象,装载一副BMP位图,并在窗口的最上角显示。 若显示位图不需修改时,可使用Draw方法。 StretchDraw方法用于改变位图的大小。用户在所需绘制的位图和图像位置确定确定一个矩形框。如果所用矩形框大于位图的原始大小,则放大位图;如果矩形框小于位图的原始大小,则缩小位图,这里是一个例子: procedure TForm1.btn2Click(Sender: TObject); var Bitmap: TBitmap; R: TRect; begin Bitmap := TBitmap.Create; Bitmap.LoadFromFile(

Python开发的飞机打外星人小游戏

好久不见. 提交于 2020-03-13 13:19:39
跟着《Python从入门到实践》这本书学习的Python,这本书最后的实践部分第一个就是实现一个飞机打外星人的小游戏,跟着书的步骤一步步做最终实现了,并扩展了飞机可以上下移动的功能。 游戏有9个py文件,分别是Alien_invasion.py游戏主程序,settings.py游戏设定,alien.py外星人,ship.py飞船,bullet.py子弹,game_status.py游戏启动与否状态,game_function游戏的函数,scoreborad游戏计数板,button.py游戏窗口的按钮。 下面简单说一下各个文件的作用。 首先是游戏的主程序Alien_invasion.py,主要是new一个游戏设定setting,new一个飞船,new存储子弹list,new存储外星人list,new计数板,设定初始游戏状态等游戏的初始化工作。 import sys import pygame from pygame.sprite import Group from settings import Settings from game_stats import GameStats from scoreboard import Scoreboard from button import Button from ship import Ship from alien import

pygame----打飞机

我的梦境 提交于 2020-03-12 11:51:36
开发工具:pycharm 游戏介绍:游戏开始时,一群外星人出现,他们在屏幕中向下移动,玩家的任务就是发射子弹消灭敌人,每消灭一个敌人,玩家积累一分。当敌人落地前未被玩家消灭,则游戏结束。 程序设计步骤: 1.游戏初始化 2.定义子弹类 3.定义玩家类 4.定义敌人类 5.设置游戏机制 6.游戏结束 一,游戏初始化 SCREEN_WIDTH= 480 SCREEN_HEIGHT = 800 TYPE_SMALL= 1 TYPE_MIDDLE= 2 TYPE_BIG= 3 二,定义子弹类 def __init__ ( self , bullet_img , init_pos): pygame.sprite.Sprite. __init__ ( self ) self .image = bullet_img self .rect = self .image.get_rect() self .rect.midbottom = init_pos self .speed = 10 三,定义玩家类 1.设置玩家基本参数 def __init__ ( self , plane_img , player_rect , init_pos): pygame.sprite.Sprite. __init__ ( self ) self .image = [] # 用来存储玩家飞机图片的列表 for i in

OCR识别PDF文件

我怕爱的太早我们不能终老 提交于 2020-03-12 07:25:35
1现有解析pdf的方法 使用org.apache.pdfbox读取pdf,只能读取pdf中的文字,有些纸件扫描成的pdf文字会错乱,有些字还是图片的方式显示的,导致读取的内容不全,常常会获取不到想要的数据。 2 OCR文字识别 pdf需要转换为图片,进行识别,识别率高。 2.1 调用百度接口 优点:识别率高,识别速度快 缺点:按次收费 2.2 使用开源工具读取pdf文档 2.2.1 下载工具包 https://github.com/tesseract-ocr/tessdata 下载chi_sim.traineddata,chi_sim_vert.traineddata 2.2.2 添加依赖 < dependencies > < dependency > < groupId > net . sourceforge . tess4j < / groupId > < artifactId > tess4j < / artifactId > < version > 4.4 .0 < / version > < / dependency > < / dependencies > 2.2.3 编写程序 import net . sourceforge . tess4j . Tesseract ; import net . sourceforge . tess4j .

SVG 2D入门10 - 滤镜

故事扮演 提交于 2020-03-12 04:51:21
滤镜称得上是SVG最强大的功能了,它允许你给图形(图形元素和容器元素)添加各种专业软件中才有的滤镜特效。这样你就很容易在客户端生成和修改图像了。而且滤镜并没有破坏原有文档的结构,所以维护性也很好。 滤镜用filter元素定义;需要使用的时候,在需要滤镜效果的图形或容器上添加filter属性,引用相关滤镜即可。 滤镜元素包含很多的滤镜原子操作;每个原子操作在传入的对象上执行一个基本的图形操作,并产生图形输出。大多数的原子操作生成的结果基本都是一个RGBA图片。每个原子操作的输入既可以是源图形,也可以使其他原子操作的结果。所以引用滤镜效果的过程就是在源图形上应用相关的滤镜原子操作,最后生成一个新的图形并渲染。 当在容器上(例如g元素)使用filter属性的时候,滤镜效果会应用到容器中的所有元素。但是容器中的元素并不会直接渲染到屏幕,而是会被暂时存储起来。然后,图形命令会被当做处理引用的filter元素的过程的一部分被执行,这个时候才会去渲染。这是通过使用SourceGraphic和SourceAlpha来指定的。下面的第二个例子中的第三种情况会演示这种效果。 有些滤镜效果会生成一些没有定义的像素点,这些点会被处理成透明效果。 先来看一个例子: <svg width="7.5cm" height="5cm" viewBox="0 0 200 120" xmlns="http://www

FFMPEG录屏(1)----录制桌面

≡放荡痞女 提交于 2020-03-11 16:56:23
https://blog.csdn.net/peilinok/article/details/102981560 首先录制桌面有很多种方法,原生windows api进行GDI抓屏,Mirror,Direct等,本文针对ffmpeg gdi抓屏进行介绍,也开始录屏软件开发之旅。 准备ffmpeg,无所谓是动态库、静态库,请自行前往下载并引入工程。 在本系列文章中,一些FFMPEG的结构、函数并不会做过多说明,请自行了解,重点放在了桌面录制的整体流程。 参考资料: ffmpeg 源代码简单分析 初始化FFMPEG av_register_all(); avdevice_register_all(); 准备屏幕参数,包含了帧率、录制区域的起始坐标、大小、是否绘制鼠标等参数。 char buff_video_size[50] = { 0 }; sprintf_s(buff_video_size, 50, "%dx%d", rect.right - rect.left, rect.bottom - rect.top); AVDictionary *options = NULL; av_dict_set_int(&options, "framerate", fps, AV_DICT_MATCH_CASE); av_dict_set_int(&options, "offset_x", rect