博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android游戏开发框架LGame-Android-0 2 5R发布
阅读量:2200 次
发布时间:2019-05-03

本文共 5550 字,大约阅读时间需要 18 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

源码及类库下载地址如下:

 

基本构成如下图:

 

00

 

LGame-Android简称LA,是一款能够运行于Android系统及其兼容衍生系统的2D游戏快速开发框架,可以(理论上)运行于Android1.1及以上版本环境中。本次发布的LGame-Android-0.2.5R版,经由LGame-Simple-0.2.5改进而成,所以也可以视为LGame-0.2.5到0.3间的过渡版本。就实际用途而言,目前它主要为收集LGame-0.3版的用户意见而发布,而0.3版也将成为LGame框架的主要分支之一。

LGame-Android版基本架构与PC版LGame高度一致,只是细微处有所区别,这一差距会随着版本的更新而逐渐缩小。当然,此框架没有发展为Qt型框架的意图,也不主张单纯为封装API而牺牲系统平台特性,所以将始终保持一定的本地函数存在。

首先,LGame在Android中的使用非常之简洁,只要引入相关类库即可运行,甚至不需要配置XML(假如您愿意的话,也可以)。

 

00

 

PS:如果您使用LGame进行游戏开发的话,甚至连admob的xml广告设置也可以省略掉,只需在LGame函数中配置广告帐号,关键词,显示位置,刷新时间等参数即可使用。

 

其次,一个最简单的LGame-Android应用由以下要素构成:

1、继承自LGameActivity的Activity

 

[java]
  1. package org.loon.test;  
  2. import org.loon.framework.android.game.LGameActivity;  
  3. import android.os.Bundle;  
  4. public class Main extends LGameActivity {  
  5.     public void onCreate(Bundle icicle) {  
  6.             //此参数为true时游戏横屏表示,否则竖屏表示。  
  7.         //另外initialization时也可以设置Admob广告的各项参数,避免xml文件的繁琐配置,  
  8.         //此部分会在未来几天内补充。  
  9.         this.initialization(icicle, false);  
  10.         //游戏主窗体  
  11.         this.setScreen(new TestScreen());  
  12.         //刷新率  
  13.         this.setFPS(30);  
  14.         //是否显示刷新率  
  15.         this.setShowFPS(true);  
  16.         //是否显示logo  
  17.         this.setShowLogo(false);  
  18.         //显示窗体  
  19.                 this.showScreen();  
  20.     }  
  21. }  
package org.loon.test;import org.loon.framework.android.game.LGameActivity;import android.os.Bundle;public class Main extends LGameActivity { public void onCreate(Bundle icicle) {         //此参数为true时游戏横屏表示,否则竖屏表示。  //另外initialization时也可以设置Admob广告的各项参数,避免xml文件的繁琐配置,  //此部分会在未来几天内补充。  this.initialization(icicle, false);  //游戏主窗体  this.setScreen(new TestScreen());  //刷新率  this.setFPS(30);  //是否显示刷新率  this.setShowFPS(true);  //是否显示logo  this.setShowLogo(false);  //显示窗体                this.showScreen(); }}

 

2、创建Screen

 

[java]
  1. package org.loon.test;  
  2. import org.loon.framework.android.game.core.graphics.LGraphics;  
  3. import org.loon.framework.android.game.core.graphics.Screen;  
  4. import android.view.KeyEvent;  
  5. import android.view.MotionEvent;  
  6. public class TestScreen extends Screen {  
  7.     public void draw(LGraphics g) {  
  8.     }  
  9.     public boolean onKeyDown(int keyCode, KeyEvent e) {  
  10.         return false;  
  11.     }  
  12.     public boolean onKeyUp(int keyCode, KeyEvent e) {  
  13.         return false;  
  14.     }  
  15.     public boolean onTouchDown(MotionEvent e) {  
  16.         return false;  
  17.     }  
  18.     public boolean onTouchMove(MotionEvent e) {  
  19.         return false;  
  20.     }  
  21.     public boolean onTouchUp(MotionEvent e) {  
  22.         return false;  
  23.     }  
  24. }  
package org.loon.test;import org.loon.framework.android.game.core.graphics.LGraphics;import org.loon.framework.android.game.core.graphics.Screen;import android.view.KeyEvent;import android.view.MotionEvent;public class TestScreen extends Screen { public void draw(LGraphics g) { } public boolean onKeyDown(int keyCode, KeyEvent e) {  return false; } public boolean onKeyUp(int keyCode, KeyEvent e) {  return false; } public boolean onTouchDown(MotionEvent e) {  return false; } public boolean onTouchMove(MotionEvent e) {  return false; } public boolean onTouchUp(MotionEvent e) {  return false; }}

 

至此,对任何使用过LGame PC版的朋友而言,剩下的操作就轻车熟路了。(会在未来几天内陆续补充内容)
另外,出于Android效率考虑,又新增加了一个简单的多线程Screen类,即ThreadScreen。此类继承自Screen,用以分离开发中的具体业务与图像刷新。
PS:此Screen中线程会在切换Screen或者程序关闭时自动注销。
有线程的Screen:

 

[java]
  1. package org.loon.test;  
  2. import org.loon.framework.android.game.core.graphics.LGraphics;  
  3. import org.loon.framework.android.game.core.graphics.ThreadScreen;  
  4. import android.view.KeyEvent;  
  5. import android.view.MotionEvent;  
  6. public class TestThreadScreen extends ThreadScreen {  
  7.     public void drawScreen(LGraphics g) {  
  8.               
  9.     }  
  10.         //gameLoop始终处于一个活动的线程之内,该线程刷新速度可由setSynchroFPS()函数控制。  
  11.     public void gameLoop() {  
  12.      //在ThreadScreen中,必须使用repaint才能令图像刷新生效  
  13.     }  
  14.     public boolean onKeyDown(int keyCode, KeyEvent e) {  
  15.         return false;  
  16.     }  
  17.     public boolean onKeyUp(int keyCode, KeyEvent e) {  
  18.         return false;  
  19.     }  
  20.     public boolean onTouchDown(MotionEvent e) {  
  21.         return false;  
  22.     }  
  23.     public boolean onTouchMove(MotionEvent e) {  
  24.         return false;  
  25.     }  
  26.     public boolean onTouchUp(MotionEvent e) {  
  27.         return false;  
  28.     }  
  29. }  
package org.loon.test;import org.loon.framework.android.game.core.graphics.LGraphics;import org.loon.framework.android.game.core.graphics.ThreadScreen;import android.view.KeyEvent;import android.view.MotionEvent;public class TestThreadScreen extends ThreadScreen { public void drawScreen(LGraphics g) {             }        //gameLoop始终处于一个活动的线程之内,该线程刷新速度可由setSynchroFPS()函数控制。 public void gameLoop() {  //在ThreadScreen中,必须使用repaint才能令图像刷新生效 } public boolean onKeyDown(int keyCode, KeyEvent e) {  return false; } public boolean onKeyUp(int keyCode, KeyEvent e) {  return false; } public boolean onTouchDown(MotionEvent e) {  return false; } public boolean onTouchMove(MotionEvent e) {  return false; } public boolean onTouchUp(MotionEvent e) {  return false; }}

 

与PC版的少许分歧:
在Android版中,以LGraphics替代Graphics2D(在PC版0.2.5R中也使用此类,API与Graphics2D高度一致,并有所扩展),LImage代替Image及BufferedImage(Bitmap封装),LFont代替Font。另外,GraphicsUtils中的createImage系列函数在Android版中被归还给了LImage,getFont系列函数归还给了LFont,其它保持不变。
Android版的部分取消:
PShadowEffect类,LMagnifier类,LPlayer类:此三类在PC版中采用像素渲染完成,而同样的像素绘图方式,在Android下速度实在悲剧,留待0.3版中改用OpenES实现……
PC版media包全体:此部分在LGame-Android版中直接封装MediaPlayer,提供有AssetsSound及AssetsSoundManager。(事实上,由于MediaPlayer对数据流不友好,故此LGame-Android中规定音频文件必须至于assets文件夹下,相关类以“Assets”开始以示区别)
一些设定上的细节问题:
对于大多数固定横纵版的游戏而言,我们都需要在AndroidManifest.xml中activity标签内配置android:configChanges="orientation|keyboardHidden"参数,以防止屏幕方向改变时重启游戏和弹出键盘。另外,无论进行任何需要读写权限的操作之前,都请确保AndroidManifest.xml内已配置有相关的操作权限,否则操作无法生效。(譬如网络连接,须注明:  <uses-permission android:name="android.permission.INTERNET"/>)。具体请参阅相关文档,此处不再赘述。
最后,为了大家调试方便,随LGame-Android一起附带的还有PC版的LGame-0.2.5R。

 

源码及类库下载地址如下:

PS:此博文尚未结束,会经由五天左右陆续补完。

 

————————————————

 

小弟今天杯具了,北京刚刚暴雨,走晚+没带伞|||。一时大意,没能提前写完此文,只好慢慢更新,也算是精益求精吧……有耐心的同志可以自己边测验类库边和小弟留言讨论,预计五天左右补充完它,总之没跳票……

 

另外,效率问题大家不用担心,0.3版核心部分已经替换为OpenGL ES了,预计9-10月期间发布。

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>