精华内容
下载资源
问答
  • Android游戏开发示例——弹幕+战棋 下载地址(内含源码及完整项目工程): ...有段时间没更新博客了,所以小弟特意一次准备了两个游戏示例...这是一个非常简单的弹幕游戏示例,采用触屏方式控制,不过基...

    下载地址(内含源码及完整项目工程): http://loon-simple.googlecode.com/files/barrage%2Bslg.7z

    有段时间没更新博客了,所以小弟特意一次准备了两个游戏示例发出。

    1、弹幕示例:

    这是一个非常简单的弹幕游戏示例,采用触屏方式控制,不过基础算法是共通的,以此扩充为完整的弹幕应该不难,在Android2.2的真机环境中,可以跑到FPS60或以上。(况且,LGame本身就提供有AVG模块,天然适合做弹幕)

     

    00

     

    2、战棋示例:

    这是很久以前为LGame-J2SE版发布过的旧例子,我刚刚把它移植到Android环境之下,源码并没有太大变动(当然,调整为触摸屏了),算是最为基础的SLG实现,移动方式为最短距离寻径。有感兴趣的朋友可以看看(由于LGame不久后会内置SLG开发模块,所以跳过不看也无所谓啦~)。

     

    00

    关于具体的实现讲解,我已经加入了源码中,此处不再赘述,总之都是非常非常简单的实现,一看就明白的。

    下载地址(内含源码及完整项目工程): http://loon-simple.googlecode.com/files/barrage%2Bslg.7z

    ____________________

    话说小弟最初本想发个塔防的例子,事实上在11号光棍节那天,我也确实准备了一个塔防的示例。然而,小弟却犯了一个小错误,那就是在该示例中提早使用了太多尚未发布的SLG模块,如果发出该示例,将导致未来版本的LGame缺少 某个 版本号 ( *^_^* ) 

    权衡利弊之下,小弟决定暂不发布塔防示例(留待发布LGame-0.2.9更新时一起发布,顺便找找图,话说最早用的素材很难看,有点浪费那个例子……)。

    另外,前一段在Google上答应了某位网友做个牌类游戏的示例,所以下次再发示例的话会写个牌类游戏的小例子(万智牌?游戏王?三国杀?想想再说……)

     

     

     

     

     

    posted on 2010-11-13 13:36 cping 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/cping1982/archive/2010/11/13/2257807.html

    展开全文
  • html5游戏开发-弹幕+仿雷电小游戏demo

    万次阅读 多人点赞 2011-12-01 14:03:29
    游戏使用的是html5的canvas,运行游戏需要浏览器支持...先看一下游戏截图演示地址http://fsanguo.comoj.com/html5/barrage2/index.html游戏开发,需要用到开源引擎:lufylegend.jslufylegend.js引擎下载地址http:

    本游戏使用的是html5的canvas,运行游戏需要浏览器支持html5。

    本篇文章详细讲解如何用html5来开发一款射击游戏,雷电可以说是射击游戏中的经典,下面就来模仿一下。

    先看一下游戏截图


    演示地址

    http://fsanguo.comoj.com/html5/barrage2/index.html


    游戏开发,需要用到开源引擎:lufylegend.js

    lufylegend.js引擎下载地址

    http://lufylegend.com/lufylegend


    游戏预计用到下面几个文件

    index.html

    js文件夹|---Main.js 

             |---Plain.js//飞机
             |---Bullet.js//子弹
             |---Global.js//共通

    images文件夹|--图片

    我简单说一下制作过程,源代码在最下面

    首先建立index.html文件,

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>弹幕</title>
    <!-- 
    <meta name="viewport" content="width=480,initial-scale=0.5, minimum-scale=0.5, maximum-scale=1.0,user-scalable=no" />
     -->
    <meta name="viewport" content="width=480,initial-scale=0.6" />
    <script type="text/javascript" src="../legend/legend.js"></script> 
    <script type="text/javascript" src="./js/Global.js"></script> 
    <script type="text/javascript" src="./js/Bullet.js"></script> 
    <script type="text/javascript" src="./js/Plain.js"></script> 
    <script type="text/javascript" src="./js/Main.js"></script> 
    </head>
    <body>
    <div id="mylegend">loading……</div>
    
    </body>
    </html>

    打开Main.js

    在里面添加代码,先将图片全部读取,并显示进度条

    以及,将一些可能会用到的变量添加进去

    /**
     * Main
     * */
    //设定游戏速度,屏幕大小,回调函数
    init(50,"mylegend",480,800,main);
    
    /**层变量*/
    //显示进度条所用层
    var loadingLayer;
    //游戏最底层
    var backLayer;
    //控制层
    var ctrlLayer;
    
    /**int变量*/
    //读取图片位置
    var loadIndex = 0;
    //贞数
    var frames = 0;
    //BOOS START
    var boosstart = false;
    //GAME OVER
    var gameover = false;
    //GAME CLEAR 
    var gameclear = false;
    //得分
    var point = 0;
    /**对象变量*/
    //玩家
    var player;
    //得分
    var pointText;
    
    /**数组变量*/
    //图片path数组
    var imgData = new Array();
    //读取完的图片数组
    var imglist = {};
    //子弹数组
    var barrage = new Array();
    //子弹速度数组
    var barrageSpeed = [5,10];
    //储存所有敌人飞机的数组
    var enemys = new Array();
    
    function main(){
    	//准备读取图片
    	imgData.push({name:"back",path:"./images/back.jpg"});
    	imgData.push({name:"enemy",path:"./images/e.png"});
    	imgData.push({name:"player",path:"./images/player.png"});
    	imgData.push({name:"boss",path:"./images/boss.png"});
    	imgData.push({name:"ctrl",path:"./images/ctrl.png"});
    	imgData.push({name:"item1",path:"./images/1.png"});
    	//实例化进度条层
    	loadingLayer = new LSprite();
    	loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");
    	addChild(loadingLayer);
    	//开始读取图片
    	loadImage();
    }
    function loadImage(){
    	//图片全部读取完成,开始初始化游戏
    	if(loadIndex >= imgData.length){
    		removeChild(loadingLayer);
    		legendLoadOver();
    		gameInit();
    		return;
    	}
    	//开始读取图片
    	loader = new LLoader();
    	loader.addEventListener(LEvent.COMPLETE,loadComplete);
    	loader.load(imgData[loadIndex].path,"bitmapData");
    }
    function loadComplete(event){
    	//进度条显示
    	loadingLayer.graphics.clear();
    	loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");
    	loadingLayer.graphics.drawRect(1,"black",[50, 203, 200*(loadIndex/imgData.length), 14],true,"#000000");
    	//储存图片数据
    	imglist[imgData[loadIndex].name] = loader.content;
    	//读取下一张图片
    	loadIndex++;
    	loadImage();
    }

    现在,所用到的图片已经全部都加载完毕,先添加背景,显示一张图片

     用legend库件显示图片非常简单

    function gameInit(event){
    	//游戏底层实例化
    	backLayer = new LSprite();
    	addChild(backLayer);
    	//添加游戏背景
    	bitmapdata = new LBitmapData(imglist["back"]);
    	bitmap = new LBitmap(bitmapdata);
    	backLayer.addChild(bitmap);}
    效果如下


    射击游戏,子弹是亮点,如何添加多种子弹是游戏的关键

    要使子弹有变化,必须要设定相应的角度,加速度,等多种变量

    下面为了实现这些变化,我们来建立一个子弹类

    /**
     * 子弹类 
     * */
    function Bullet(belong,x,y,angle,xspeed,yspeed,aspeed,speed){
    	base(this,LSprite,[]);
    	var self = this;
    	//子弹所属
    	self.belong = belong;
    	//出现位置
    	self.x = x;
    	self.y = y;
    	//角度
    	self.angle = angle;
    	//移动速度
    	self.speed = speed;
    	//xy轴速度
    	self.xspeed = xspeed;
    	self.yspeed = yspeed;
    	//旋转角度加成
    	self.aspeed = aspeed;
    	//子弹图片
    	var bitmapdata,bitmap;
    	bitmapdata = new LBitmapData(imglist["item1"]);
    	bitmap = new LBitmap(bitmapdata);
    	self.bitmap = bitmap;
    	//显示
    	self.addChild(bitmap);
    }
    然后,在子弹移动过程中,根据这些变量来实现多种变换

    在共通类中,加入一个子弹数组,用来区分各种子弹

    /**
     * 子弹类型数组
     * 【开始角度,增加角度,子弹速度,角度加速度,子弹总数,发动频率,枪口旋转】
     * */
    Global.bulletList = new Array(
    		{startAngle:0,angle:20,speed:5,aspeed:0,count:1,shootspeed:10,sspeed:0},//1发
    );
    游戏最基本的子弹,当然就是每次发一个子弹

    在共通类里建一个发射子弹的函数

    /**
     * 发射子弹
     * @param 飞机
     * */
    Global.setBullet = function(plainObject){
    	var i,j,obj,xspeed,yspeed,kaku;
    	//获取子弹属性
    	var bullet = Global.bulletList[0];
    	//开始发射
    	for(i=0;i<bullet.count;i++){
    		//发射角度
    		kaku = i*bullet.angle + bullet.startAngle;
    		//子弹xy轴速度
    		xspeed = bullet.speed*Math.sin(kaku * Math.PI / 180);
    		yspeed = barrageSpeed[0]*Math.cos(kaku * Math.PI / 180);
    		//子弹实例化
    		obj = new Bullet(0,210,300,kaku,xspeed,yspeed,bullet.aspeed,bullet.speed);
    		//显示
    		backLayer.addChild(obj);
    		barrage.push(obj);
    	}
    };
    这里,最终需要根据发射的飞机不同而不同,所以我加入了参数飞机

    那现在建立飞机类,如下

    /**
     * 飞机类
     * */
    function Plain(name,belong,x,y,bullets){
    	base(this,LSprite,[]);
    	var self = this;
    	//飞机名称
    	self.name = name;
    	//飞机位置
    	self.x = x;
    	self.y = y;
    	//飞机所属
    	self.belong = belong;
    	//子弹数组
    	self.bullets = bullets;
    	//初始子弹
    	self.bullet = self.bullets[Math.floor(Math.random()*self.bullets.length)];
    	self.shootspeed = Global.bulletList[self.bullet].shootspeed;
    	//枪口旋转角度
    	self.sspeed = 0;
    	//射击频率控制
    	self.shootctrl = 0;
    	//获取飞机属性
    	self.list = Global.getPlainStatus(self);
    	//飞机图片
    	self.bitmap = self.list[0];
    	//显示
    	self.addChild(self.bitmap);
    	//枪口位置
    	self.shootx = self.list[1];
    	self.shooty = self.list[2];
    	//移动速度
    	self.speed = self.list[3];
    	//飞机hp
    	self.hp = self.list[4];
    	//移动方向
    	self.move = [0,0];
    	//发射子弹数
    	self.shootcount = 0;
    	//是否发射子弹
    	self.canshoot = true;
    	if(name=="player")self.canshoot = false;
    }
    
    /**
     * 循环
     * */
    Plain.prototype.onframe = function (){
    	var self = this;
    	//移动
    	self.x += self.move[0]*self.speed;
    	self.y += self.move[1]*self.speed;
    	
    	switch (self.name){
    		case "player":
    			//自机移动位置限制
    			if(self.x < 0)self.x = 0;
    			else if(self.x + self.bitmap.getWidth() > LGlobal.width)self.x = LGlobal.width-self.bitmap.getWidth();
    			if(self.y < 0)self.y = 0;
    			else if(self.y + self.bitmap.getHeight() > LGlobal.height)self.y = LGlobal.height-self.bitmap.getHeight();
    			break;
    		case "boss":
    			//敌机BOSS移动
    			if(self.y < 0){
    				self.y = 0;
    				self.move[1] = 1;
    			}else if(self.y + self.bitmap.getHeight() > LGlobal.height){
    				self.y = LGlobal.height-self.bitmap.getHeight();
    				self.move[1] = -1;
    			}
    			//碰撞检测
    			self.hitTest();
    			break;
    		case "enemy":
    		default:
    			//碰撞检测
    			self.hitTest();
    	}
    	//射击
    	if(self.canshoot)self.shoot();
    };
    
    /**
     * 碰撞检测
     * */
    Plain.prototype.hitTest = function (){
    	var self = this;
    	var disx,disy,sw,ew;
    	sw = (self.bitmap.getWidth() + self.bitmap.getHeight())/4;
    	ew = (player.bitmap.getWidth() + player.bitmap.getHeight())/4;
    	disx = self.x+sw - (player.x + ew);
    	disy = self.y+self.bitmap.getHeight()/2 - (player.y + player.bitmap.getHeight()/2);
    	if(disx*disx + disy*disy < (sw+ew)*(sw+ew)){
    		player.visible = false;
    		gameover = true;
    	}
    };
    /**
     * 射击
     * */
    Plain.prototype.shoot = function (){
    	var self = this;
    	if(self.shootctrl++ < self.shootspeed)return;
    	self.shootctrl = 0;
    	if(self.name == "boss"){
    		if(self.shootcount++ % 20 > 5)return;
    	}else{
    		if(self.shootcount++ % 10 > 5)return;
    	}
    	Global.setBullet(self);
    	if(self.name == "boss"){
    		if(self.shootcount % 20 < 5)return;
    	}else{
    		if(self.shootcount % 10 < 5)return;
    	}
    	if(self.bullets.length <= 1)return;
    	self.bullet = self.bullets[Math.floor(Math.random()*self.bullets.length)];
    	self.shootspeed = Global.bulletList[self.bullet].shootspeed;
    };

    代码已经加入了详细的注释,不难理解吧

    完善子弹类如下

    /**
     * 子弹类 
     * */
    function Bullet(belong,x,y,angle,xspeed,yspeed,aspeed,speed){
    	base(this,LSprite,[]);
    	var self = this;
    	//子弹所属
    	self.belong = belong;
    	//出现位置
    	self.x = x;
    	self.y = y;
    	//角度
    	self.angle = angle;
    	//移动速度
    	self.speed = speed;
    	//xy轴速度
    	self.xspeed = xspeed;
    	self.yspeed = yspeed;
    	//旋转角度加成
    	self.aspeed = aspeed;
    	//子弹图片
    	var bitmapdata,bitmap;
    	bitmapdata = new LBitmapData(imglist["item1"]);
    	bitmap = new LBitmap(bitmapdata);
    	self.bitmap = bitmap;
    	//显示
    	self.addChild(bitmap);
    }
    
    /**
     * 循环
     * @param 子弹序号
     * */
    Bullet.prototype.onframe = function (index){
    	var self = this;
    
    	//子弹移动
    	self.x += self.xspeed;
    	self.y += self.yspeed;
    	
    	//子弹角度变更
    	if(self.aspeed != 0){
    		self.angle += self.aspeed;
    		//子弹角度变更后,重新计算xy轴速度
    		self.xspeed = self.speed*Math.sin(self.angle * Math.PI / 180);
    		self.yspeed = self.speed*Math.cos(self.angle * Math.PI / 180);
    	}
    	//子弹位置检测
    	if(self.x < 0 || self.x > LGlobal.width || self.y < 0 || self.y > LGlobal.height){
    		//从屏幕移除
    		backLayer.removeChild(self);
    		//从子弹数组移除
    		barrage.splice(index,1);
    	}else{
    		self.hitTest(index);
    	}
    	
    };
    /**
     * 子弹碰撞检测
     * @param 子弹序号
     * */
    Bullet.prototype.hitTest = function (index){
    	var self = this;
    	var disx,disy,sw,ew,obj,i;
    	if(self.belong == player.belong){
    		//自机子弹
    		for(i=0;i<enemys.length;i++){
    			obj = enemys[i];
    			sw = self.bitmap.getWidth()/2;
    			ew = obj.bitmap.getWidth()/2;
    			disx = self.x+sw - (obj.x + ew);
    			disy = self.y+self.bitmap.getHeight()/2 - (obj.y + obj.bitmap.getHeight()/2);
    			//距离检测
    			if(disx*disx + disy*disy < ew*ew){
    				obj.hp--;
    				if(obj.hp == 0){
    					point += 1;
    					pointText.text = point;
    					//从屏幕移除
    					backLayer.removeChild(obj);
    					//从敌机数组移除
    					enemys.splice(i,1);
    					if(obj.name == "boss"){
    						gameclear = true;
    					}
    				}
    				//从屏幕移除
    				backLayer.removeChild(self);
    				//从子弹数组移除
    				barrage.splice(index,1);
    			}
    		}
    	}else{
    		//敌机子弹
    		obj = player;
    		sw = self.bitmap.getWidth()/2;
    		ew = obj.bitmap.getWidth()/2;
    		disx = self.x+sw - (obj.x + ew);
    		disy = self.y+self.bitmap.getHeight()/2 - (obj.y + obj.bitmap.getHeight()/2);
    		//距离检测
    		if(disx*disx + disy*disy < ew*ew - 10){
    			obj.visible = false;
    			gameover = true;
    			//从屏幕移除
    			backLayer.removeChild(self);
    			//从子弹数组移除
    			barrage.splice(index,1);
    		}
    	}
    };

    子弹发射函数,修改如下

    /**
     * 发射子弹
     * @param 飞机
     * */
    Global.setBullet = function(plainObject){
    	var i,j,obj,xspeed,yspeed,kaku;
    	//获取子弹属性
    	var bullet = Global.bulletList[plainObject.bullet];
    	//设定枪口旋转
    	plainObject.sspeed += bullet.sspeed;
    	//开始发射
    	for(i=0;i<bullet.count;i++){
    		//发射角度
    		kaku = i*bullet.angle + bullet.startAngle + plainObject.sspeed;
    		//子弹xy轴速度
    		xspeed = bullet.speed*Math.sin(kaku * Math.PI / 180);
    		yspeed = barrageSpeed[0]*Math.cos(kaku * Math.PI / 180);
    		//子弹实例化
    		obj = new Bullet(plainObject.belong,plainObject.x+plainObject.shootx,plainObject.y+plainObject.shooty,kaku,xspeed,yspeed,bullet.aspeed,bullet.speed);
    		//显示
    		backLayer.addChild(obj);
    		barrage.push(obj);
    	}
    };
    在Main文件里添加循环

    /**
     * 循环
     * */
    function onframe(){
    	
    	var i;
    	//循环子弹
    	for(i=0;i<barrage.length;i++){
    		barrage[i].onframe(i);
    	}
    	//循环敌机
    	for(i=0;i<enemys.length;i++){
    		enemys[i].onframe();
    	}
    }
    现在,我只需要添加飞机,就可以发射子弹了

    plain = new Plain("enemy",1,200,300,[0]);
    		
    看效果


    修改,子弹的相应参数,如下

    /**
     * 子弹类型数组
     * 【开始角度,增加角度,子弹速度,角度加速度,子弹总数,发动频率,枪口旋转】
     * */
    Global.bulletList = new Array(
    		{startAngle:0,angle:20,speed:5,aspeed:0,count:1,shootspeed:10,sspeed:0},//1发
    		{startAngle:-20,angle:20,speed:5,aspeed:0,count:3,shootspeed:10,sspeed:0},//3发
    		{startAngle:0,angle:20,speed:5,aspeed:0,count:1,shootspeed:1,sspeed:20},//1发旋转
    		{startAngle:0,angle:20,speed:5,aspeed:0,count:18,shootspeed:3,sspeed:0},//环发
    		{startAngle:0,angle:20,speed:5,aspeed:1,count:18,shootspeed:3,sspeed:0},//环发旋转
    		{startAngle:180,angle:20,speed:5,aspeed:0,count:1,shootspeed:5,sspeed:0},//1发 up
    		{startAngle:160,angle:20,speed:5,aspeed:0,count:3,shootspeed:5,sspeed:0}//3发 up
    );

    效果分别为







    lufylegend.js引擎包内包含这个demo,请直接下载lufylegend.js引擎,查看引擎包内源码

    lufylegend.js引擎下载地址

    http://lufylegend.com/lufylegend


    展开全文
  • DxLib是神马东西?看名字,似乎是M$的DirectX的官方库?NONONO,这货其实是日本人开发出来的一个库,封装了很多DirectX的函数,使开发更方便。...先从小日本那边下载DxLib,官方的下载地址貌似是...

     

    DxLib是神马东西?看名字,似乎是M$的DirectX的官方库?NONONO,这货其实是日本人开发出来的一个库,封装了很多DirectX的函数,使开发更方便。这个库在日本那边很流行,很多同人游戏都是使用这个库开发的。这跟大陆不同,我们更喜欢使用FLASH开发小游戏。

     

    题外话,那个无比恶搞的猫玛丽就是使用DxLib来开发的。

     

    先从小日本那边下载DxLib,官方的下载地址貌似是这个:

    http://homepage2.nifty.com/natupaji/DxLib/

    假设我将其解压到D:/DxLib_GCC目录。

     

    DxLib自带了各种IDE的配置教程,如VC,C#,Delphi等。

    我这里实验使用的是Dev-C++。虽然工具比较旧,但是用来做小实验还不错。(下面简称dc)

    配置教程在这里:

    D:/DxLib_GCC/help/dxuse_gcc.html

    看不懂日文没关系,里面有一部分英文和汉字,大约摸懂就行。

    实际上我也不懂日文,看着猜的,嘿嘿!

    我根据自己的理解,整理了一下配置过程:

    一、dc基本设置

    1.[Tools]->[Compiler Options]

    2.选择Diectories项

    3.选择Libraries项

    4.将DxLib目录加到里面去

    5.然后选择C++ Includes项

    6.将DxLib目录同样加到里面去

    7.点OK完成设置

    二、项目

    1.[file]->[new]->[project...]

    2.选择[Windows Application]

    3.Project Option的name输入,例如DrawPixel,点OK

    4.选择项目保存在哪里

    5.项目会自动打开main.cpp,将其保存

    三、项目设定

    1.[Project]->[Project Option]

    2.选择Parameters项

    3.在[C++ compiler]中加入:

    -DDX_GCC_COMPILE

    -DDX_NON_INLINE_ASM

    4.在[Linker]中加入:

    -lDxLib

    -lDxUseCLib

    -ljpeg

    -lpng

    -lzlib

    -ltheora_static

    -lvorbis_static

    -lvorbisfile_static

    -logg_static

    -lbulletdynamics

    -lbulletcollision

    -lbulletmath

    5.点OK完成设置

     

    有一个不方便的地方就是每个项目都要设置一次Project属性。

     

    这个教程下有一个简单的demo程序:

     

     

    #include "DxLib.h"
    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
    {
    	if( DxLib_Init() == -1 ){return -1 ;}//若初始化失败则退出
    	ChangeWindowMode(TRUE);//以窗口模式运行
    	DrawPixel( 320 , 240 , 0xffff ) ;//画一个点
    	WaitKey() ;//等待输入,pause
    	DxLib_End() ;//Dx结束
    	return 0 ;
    }
     

    我不知道其他人能不能跑通,反正我是不行的,编译错误。

    于是我修改了DxDirectX.h文件,将这句:

    HRESULT  GetSeekingLongLong ( HRESULT (__stdcall D_IMediaSeeking::*pMethod)( LONGLONG * ), LONGLONG * pll );

    改为:

    HRESULT  GetSeekingLongLong ( HRESULT __stdcall D_IMediaSeeking::*pMethod ( LONGLONG * ), LONGLONG * pll );

    居然就能编译通过了。运气不错!

     

     


    运行结果就是一个黑色的窗口,正中间有一个小白点

     

    展开全文
  • 斗鱼直播是一款直播软件,包括很多的直播类型,比如游戏直播,综艺直播,主播直播等,看到精彩的时候大家难免要发表自己的一些看法和观点,这是进行界面切换是非常麻烦的,斗鱼主播弹幕助手可以帮助你把这一问题干掉...
  • 今天来看看bilibili直播平台直播时如何在全屏游戏的时候观看直播间的弹幕。1弹幕弹幕姬是一个第三方的插件,官网是https://www.danmuji.org/。可以设置它来读取弹幕或观看全屏弹幕弹幕姬官网点击【下载安装包】...

    今天来看看bilibili直播平台直播时如何在全屏游戏的时候观看直播间的弹幕。

    1弹幕姬

    弹幕姬是一个第三方的插件,官网是https://www.danmuji.org/。可以设置它来读取弹幕或观看全屏弹幕。

    d8f2f7c396522943d9ab9cd5eb177708.png

    弹幕姬官网

    点击【下载安装包】即可开始下载。下载完毕后双击打开安装包。打开弹幕姬客户端

    61e98a29b9d8667f3198110aeb72b131.png

    弹幕姬主界面

    在箭头标注的输入框里输入自己的bilibili直播房间号,输入完毕之后点击【连接】。勾选【弹幕】再点击测试效果。如图会出现全屏弹幕。

    216d6386d48b1ddc9a54a87d0a8dcb48.png

    测试全屏弹幕

    如果想让弹幕姬读取自己直播间的弹幕,用浏览器打开弹幕姬官网点击插件列表。

    ef3a4900a37f7142abd16e934d4181d0.png

    下载读取弹幕插件

    下载箭头标识的Re: TTSCat

    0a01b66951f6a6f7b02a8a422d288eee.png

    点击下载

    启↖ 下载插件解压,得到 Re_TTSCat.dll将其丢到弹幕姬插件目录里面(文档弹幕姬Plugins)启动/重启弹幕姬启动插件启动方式点开弹幕姬【外挂程式】右键点击 Re_TTSCat的【外挂程式状态】设置为开启状态。如图
    fdd825a1db48a32c8f229d574983d119.png

    开启Re_TTSCat外挂程式状态

    再点击测试效果即可读取直播间的弹幕,这样就不会错不过每一条观众的弹幕并与之互动。

    2小葫芦弹幕助手

    小葫芦弹幕助手有自己的官网https://www.xiaohulu.com/,它的功能非常多。弹幕支持多个平台。

    735642f95171aef8653e73de287786dd.png

    小葫芦的功能

    选择【弹幕助手】下载

    fe1ba0b0b65da47062d9e5b7c47dc75f.png

    解压安装包打开解压后的文件夹双击SetUp

    02660e63f8517ee7dbdb0cfba84b5c86.png

    双击setup安装小葫芦弹幕助手

    d393cf891ad28cda3201a553d488417b.png

    选择小葫芦弹幕助手安装文件夹

    点击【浏览】选择安装弹幕助手的文件夹,如上图。然后点击【下一步】最后点击安装即可

    e7cfdbc5dcfc29ed0713cba09703b408.png

    安装弹幕助手

    打开【小葫芦弹幕助手】客户端

    bb062035a4a2aa43d699f5127cdfbf35.png

    小葫芦弹幕助手支持的平台

    小葫芦支持的平台有很多,如上图。选择自己要直播的平台然后出入房间号,点击确定。

    b59943140aa24e7008a9a0c8b8080612.png

    小葫芦弹幕姬设置教程

    这时候会出现小葫芦弹幕姬使用指南,认真解读即可上手,这里不做多描述。

    16413df85088db87a60ac443926f45cd.png

    弹幕显示

    点击【链接】即可显示弹幕,如图。

    d479209815b37de413e5ac55e4719292.png

    全屏弹幕

    点击左栏里的全屏弹幕选择列表1可以自由设置各个参数,比如要显示的行数。

    这里说明一下小葫芦弹幕助手支持的游戏,请看图。

    b5afcba814116c1bfb1f60700fee182e.png

    小葫芦全屏弹幕支持的游戏

    可以点击下面的更多游戏查看是否自己自己所要直播的游戏,小葫芦的弹幕助手也会持续更新未来所支持的游戏,更大的服务观众。

    b831af1b81fe7efc37b43bb7be35b3e1.png

    小葫芦弹幕助手弹幕朗读功能

    在左栏也可以看到【弹幕朗读】功能。选择后可以调整自己所要朗读的参数,请自由调整。然后勾选【弹幕朗读】功能

    272e0fb729fe4213bbaa791cce7b55c6.png

    小葫芦弹幕助手模板市场

    点击左栏里的【模板市场】可以设置自己的弹幕模板,自由选择。

    7c935e50e2e7df11daa56af7dbb3199b.png

    粉丝管理

    点击左栏里的【粉丝管理】可以观看自己的粉丝也可以把不喜欢的粉丝加入【黑名单】。

    综上所述,相信大家也对直播如何显示全屏弹幕有一定的了解了。希望大家直播愉快,直播间日渐红火。

    PS:斗鱼、虎牙都有自己的直播助手。如何使用请观看他们官网如何开播和开播教程,而且支持全屏弹幕,易于上手。

    欢迎大家关注我的头条号,我会写一些关于直播技巧和工具下载和使用,请大家多多支持。也可以参与讨论和我互动。如果哪里说的不对说的不详细请大家指出来,我会改正。谢谢!

    展开全文
  • 还记得被东方project弹幕支配的恐惧吗——————————————————————如何用construct2做一个简易的弹幕游戏游戏链接http://1.projectboli.applinzi.com/当然,开始的开始,还是需要大家下载安装free...
  • 不知道大家空闲的时候是否也会拿出手机或打开浏览器看会直播,游戏的也好,颜值的也好,尤其是在一些热度高的直播间,会发现有一大片的刷屏弹幕,要是人工的话也太累了,现在就用15行的代码给大家带来弹幕水军的制作...
  • 本案例是使用WeX5制作的app,界面模仿b站(哔哩哔哩弹幕视频网)客户端。 功能介绍: ①模仿b站app的首页展现、话题/游戏中心等页面展现、多栏目侧滑查看、左侧边栏、搜索栏等。 ②视频详细信息展现,示意性分享与...
  • 下载为steam正版分流使用尼尔机械纪元特色流畅的动作打斗包含独特的弹幕游戏丰富的武器系统吸引人的故事剧情不同玩法会出现多种结局尼尔机械纪元简介游戏讲述在被摧毁的地球上由人类的敌人外星人派来的机械生命...
  • 公司年会大屏幕抽奖

    2018-09-25 15:06:14
    更新:宇宙弹幕主题,可以设置循环播放是否开启 新增:拍拍乐 2016.5.14 更新:增加了一些代码注释 更新:强化了代码的兼容性 2016.5.7 更新:数据获取方式调整,减少网络流量,性能更好。 2016.3.30 更新:美化摇一摇...
  • 哔哩哔哩动画手机端最新版是b站推出的看动画神器,主要以弹幕acg主题视频站bilibili的各种趣怪恶搞内容为主,还有娱乐、游戏、音乐等资源,非常丰富,喜欢的朋友,赶快下载体验吧!官方介绍哔哩哔哩弹幕网是国内知名...
  • 基于android平台的雷电项目,传统的打飞机游戏,特点是采用触控操作,而且boss将会生成规律、花形的华丽弹幕,具体请看源码下载请访问地址 http://download.csdn.net/source/3390647内附说明文档。 本资源完全原创...
  • the1812/Bilibili-Evolved:强大的哔哩哔哩增强脚本: 下载视频, 音乐, 封面, 弹幕 / 简化直播间, 评论区, 首页 / 自定义顶栏, 删除广告, 夜间模式 / 触屏设备支持 其他: kuresaru/geetest-validator:geetest调试...
  • 虎牙直播是中国领先的弹幕式直播互动平台,虎牙直播以游戏直播为主,涵盖娱乐、综艺、教育、户外、体育等多种直播内容。那么虎牙主播如何进行实名认证?虎牙直播怎么成为签约主播?一起来看看吧。招游戏陪玩,虎牙陪玩...
  • 068《pakku 哔哩哔哩弹幕过滤器》提升你的哔哩哔哩弹幕体验 067 《bilibili哔哩哔哩B站下载助手》下载在B站可以观看的视频 066 《PowerfulPixivDownloader》福利工具! Pixiv图片批量下载器 065 《HTML5视频...
  • 为您提供bilibili直播姬下载,bilibili直播姬B站官方推出的一款直播软件,只管卖萌其他的交给直播姬吧,集成弹幕、一键开播、高清播放、快捷管理,bilibili直播姬一款简单实用的直播软件,不管是游戏还是各种三次元...
  • 项目总结

    2019-02-23 22:15:42
    说说这款游戏,这是一款类ARPG的弹幕游戏,有技能系统,有弹幕系统,也有复杂的属性,而且支持弱联网,包括上传存档,下载存档 我主要负责的是技能中的buff模块,角色背包,商店和任务逻辑,详细内容是: 1.搭建...
  • 用canvas实现视频播放与弹幕功能 基于canvas实现波浪式绘制图片 基于canvas实现的一个截图小demo 该系列记录了我自己对于canvas学习的过程,期间实现了如:截图效果、粒子动画、曲线动画等等,并开源了bezierMaker....
  • 很炫的解谜游戏源代码分享  签名apk的方法步骤  android widget 桌面插件的简单事例讲解  android网络下载三部曲,包括(断点下载,多任务下载) ...Android游戏开发示例——弹幕游戏(内含源码)  Android游戏
  • 很炫的解谜游戏源代码分享 签名apk的方法步骤 android widget 桌面插件的简单事例讲解 android网络下载三部曲,包括(断点下载,多...Android游戏开发示例——弹幕游戏(内含源码) Android游戏开发示例——战棋...
  • 战旗TV是一个专业的游戏直播平台,如果你想在战旗TV直播游戏的话,那么免不了...2. 新增弹幕助手功能 3. 新增弹幕投票功能 4. 新增礼物助手功能 5. 新增直播数据展示 6. 更多优化,请下载新版体验  战旗TV截图
  • 为您提供头榜直播盒子下载,头榜直播盒子是一款电脑直播工具,软件支持虎牙、斗鱼平台,实时监控直播间数据,头榜直播盒子可以进行弹幕管理,小礼物屏蔽等操作,土豪数据分屏显示,实时醒目播报。满足用户各种操作...
  • 主要还差一个预览视频与弹幕的功能尚未完成,希望能把B站首页写完,并且会持续更新中,后面可能会加上直播等功能。 相关截图: 首页: 轮播: 直播: 排行: 游戏: 拖拽排序与滚动效果:

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

弹幕游戏下载