雪碧

2D游戏作业:Pygame的精灵使用

谁说我不能喝 提交于 2020-03-23 17:45:13
3 月,跳不动了?>>> 程序介绍: pygane.sprite.Sprite是Pygame里面用来实现精灵的一个类,使用时并不需要对它实例化,只需要继承它,然后按需写出自己的类,因此非常简单实用。 开发工具:Visual Studio Code 代码参考: 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_fram=0 self.last_fram=0 self.columns=1 self.last_time=0 def load(self,filename,width,height,columns): self.master_image=pygame.image.load(filename)

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

python项目分享-飞机大战

霸气de小男生 提交于 2020-02-26 02:14:20
python项目分享-飞机大战 最近学了一阵python写了个较为低级的游戏,来分享一下源码。大家相互学习: plane_main.py import pygame import ceshi from plane_sprit import * pygame . init ( ) pygame . mixer . music . load ( "背景 音乐2.mp3" ) pygame . mixer . music . play ( ) class planegame ( object ) : def __init__ ( self ) : self . sceen = pygame . display . set_mode ( SCREEN_RECT . size ) self . clock = pygame . time . Clock ( ) self . __creatsprit ( ) pygame . time . set_timer ( ENNY_PLANE , 1000 ) pygame . time . set_timer ( HEARO_FIR , 500 ) pygame . time . set_timer ( ENNY_PLANE2 , 1500 ) def __creatsprit ( self ) : bg1 = background ( ".

图形化编程娱乐于教,Kittenblock实例,角色移到某坐标

房东的猫 提交于 2020-02-22 19:55:21
图形化编程娱乐于教,Kittenblock实例,角色移到某坐标 跟很多学生聊过,很多学生不是不努力,只是找不到感觉。有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同。关键的问题在于,带入感,我能给出的建议,就是咬咬牙,坚持住,没有学不会的知识。会陆续分享图形化编程的经验,希望能够做成一个专题。如果您觉得有用,就给点个赞吧。涉及的软件包括scratch3.0 (.sb3)、Python、Kittenblock。 程序解读:气球被单击后,自动移到恐龙手中。 知识点:移到某坐标。 涉及的软件:scratch3.0 (.sb3)、Python、Kittenblock。 程序效果图! 程序代码 角色恐龙 # -*- coding: utf-8 -*- import _env, time, random from kblock import * 恐龙 = Sprite("恐龙") 气球 = Sprite("气球") x = 0 恐龙.motion_gotoxy(0, 0) 角色气球 # -*- coding: utf-8 -*- import _env, time, random from kblock import * 恐龙 = Sprite("恐龙") 气球 = Sprite("气球") x = 0 气球.motion_gotoxy(109, 74) ​ 来源:

python实现飞机大战游戏

≯℡__Kan透↙ 提交于 2020-02-07 01:16:32
左边就是效果图了,直接上代码 bullet.py import pygame class Bullet1 ( pygame . sprite . Sprite ) : def __init__ ( self , positon ) : pygame . sprite . Sprite . __init__ ( self ) self . image = pygame . image . load ( "images/bullet1.png" ) . convert_alpha ( ) self . rect = self . image . get_rect ( ) self . rect . left , self . rect . top = positon self . speed = 12 self . active = True self . mask = pygame . mask . from_surface ( self . image ) def move ( self ) : self . rect . top - = self . speed if self . rect . top < 0 : self . active = False def reset ( self , position ) : self . rect . left , self .

黑马程序员 飞机大战下 笔记

与世无争的帅哥 提交于 2020-01-28 12:51:29
前言 昨日推箱子游戏的碰撞检测中,我忽略了箱子互相挨着的情况。修改的方法很简答: if len(pygame.sprite.groupcollide(hero_group,box_group,False,False)) > 0: self.rect.y -= 50 if len(pygame.sprite.groupcollide(hero_group,wall_group,False,False)) + len(pygame.sprite.groupcollide(hero_group,box_group,False,False))> 0: self.rect.y += 50 self.rect.y += 50 加上检测是否有箱子即可。 在我看来,黑马源代码有一个我容易忽略的点,其编写敌机、英雄、背景和子弹类多半使用的是私有成员函数。 def __create_sprites(self): 之前的我在直接复制改代码的时候忽略了这个问题,因为无法访问成员函数这个问题瞎忙活了半晌,最后找到前面的下划线时哭笑不得。 英雄和子弹 英雄拥有的额外属性:水平移动,定时发射子弹。于update函数中添加位移限制,利用get.pressed函数,省去反复摁键的繁赘。 def __event_handler(self): key_press = pygame.key.get_pressed()

cocos2d-基本概念(1)-Basic actions基本动作

二次信任 提交于 2020-01-24 02:39:02
Action就好像给一个cocosNode对象的命令。这些动作通常用来改变物体的属性,例如位置,旋转,缩放等。如果这些属性在一段时间只能被修改的话,那么这中叫做 IntervalAction 的Action。否则,它们叫做 InstantAction 的动作。 例如:MoveBy 动作,在一段时间之内,改变了位置这个属性 ,也就是说它是一个 IntervalAction的Action。 Example: # Move a sprite 50 pixels to the right, and 10 pixels to the top over 2 seconds. [sprite runAction: [MoveBy actionWithDuration:2 position:ccp(50,10)]]; IntervalAction 有一些很有趣的属性 它们可以通过时间改变来进行加速 EaseIn EaseOut EaseInOut Speed Etc. (See the EaseActionsTest.m example for more info) 所有 相对 的动作(以 By 结尾的)和一些 绝对 的动作(以 To 结尾的)都有一个翻转的动作,执行了一个相反方向的操作。 ( [action reverse] ) 你可以使用pause/resume 来停止和恢复action #

Unity 视频缩略图获取

↘锁芯ラ 提交于 2020-01-20 08:25:44
IEnumerator GetVideoThumb(string urlpath,int index) { print(index); Transform go= Instantiate(VideoPlayerPrefab); VideoPlayer tmpVp= go.gameObject.AddComponent<VideoPlayer>(); go.gameObject.AddComponent<IndexNumber>(); go.GetComponent<IndexNumber>().index = index; tmpVp.source = VideoSource.Url; tmpVp.url = urlpath; tmpVp.sendFrameReadyEvents = true; //绑定的事件会不断调用 tmpVp.frameReady += OnNewFrame; tmpVp.Play(); yield return null; //while (tmpVp.texture == null|| tmpVp.isPlaying==false) //{ // yield return new WaitForSeconds(1.5f); //} //Texture2D videoFrameTexture = new Texture2D(Screen.width,

读取指定路径图片

风格不统一 提交于 2020-01-08 04:28:36
public static Sprite GetSpriteByIO(string _path) { FileStream fileStream = new FileStream(_path, FileMode.Open, FileAccess.Read); fileStream.Seek(0, SeekOrigin.Begin); byte[] bytes = new byte[fileStream.Length]; fileStream.Read(bytes, 0, (int)fileStream.Length); fileStream.Close(); fileStream.Dispose(); Texture2D tex = new Texture2D(1, 1); tex.LoadImage(bytes); Sprite sp = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); sp.name = tex.name; return sp; } 来源: https://www.cnblogs.com/SevenPixels/p/11062798.html

03 canvas帧动画封装案例

我只是一个虾纸丫 提交于 2020-01-06 04:57:28
sprite.js /** * Created by suxiaoxia on 2017/7/15. */ function sprite(option) { this._init(option); } sprite.prototype = { /*初始化*/ _init:function (option) { this.x = option.x || 0; this.y = option.y || 0; this.w = option.w || 40; this.h = option.h || 65; this.fps = option.fps || 10; this.originW = option.originW || 40; this.originH = option.originH || 65; this._dirIndex = 0; this._imgSrc = option.imgSrc || ''; }, render:function (ctx) { var img = new Image(); img.src = this._imgSrc; var self = this; img.onload = function () { var frameIndex = 0; setInterval(function () { ctx.clearRect(0,0,ctx