智能手机时代已经到来了,手机的性能正在以你我惊讶的速度提升。那么手机游戏也在迅速发展,从简单的平面单机游戏不断的向复杂的3D网络游戏发展。所以,手机游戏的市场肯定也在不断扩张。那么,作为程序猿,我们也不能落后,要与时俱进,才不会被淘汰。Android是眼下最火的手机平台,那么我们选择android平台开发肯定没错。今天我们就带着大家一步步攻克android手机游戏。其实,这一切都没有那么难,一切都是自我设限。好吧,那就一起行动起来吧!

我打算陆续的把游戏中用到的技术点和我的一些体会发布到这里,不会一下子全部罗列出来,那样会增加大家的学习负担。今天,我们将讨论游戏的基础储备。

其实,游戏有很多分类,在此我就不啰嗦了,baidu搜索就有答案。我最终以大战飞机(雷电)游戏为实现目标和讲解案例。我不采用任何的游戏引擎,全部以android原生态的功能来实现。

关于游戏开发要掌握的一些基础:

1、坐标系

Android系统中,屏幕的坐标原点(0,0)跟电脑屏幕的一样,在屏幕的左上角,横向代表x轴,向右延生为正方向,纵向代表y轴,向下延生为正方向,如下图:

2、屏幕的宽度和高度

为了能让游戏角色显示在屏幕的合适位置,我们需要知道屏幕的宽度和高度作为参考。在Android获取屏幕的高宽很简单,只需要在Activity中获取WindowManager对象,然后从WindowManager对象中获取Display对象,再从Display对象中获取高宽,代码如下:

WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();

3、边界问题

几乎所有的游戏都需要做边界判断,比如我们要实现的飞机大战,我们需要判断玩家、敌人和子弹等视图的边界是否超过屏幕,或者他们之间有没有发生碰撞。简单来说就是判断有没有超出屏幕的边界,或者游戏角色之间有没有重叠,一般都是通过坐标(x,y)来判断的。

1) 如果x<0,那么超过了屏幕的左边界,如果x>屏幕的宽度,那么超过的屏幕的右边界。

2) 如果y<0,那么超过了屏幕的上边界,如果y>屏幕的高度,那么超过了屏幕的下边界。

4、角色或场景的移动

游戏中的角色移动其实也是简单的,就是不断的改变角色的x,y坐标的值,然后不断重新把他们绘制到屏幕里,只是这个动作的非常快,以至于人的眼睛是无法分辨。但是,这种角色坐标改变的逻辑是需要我们程序猿按照游戏的逻辑的来控制的。常常会使用到线程的知识点,不过也很简单。

1) 如果向左移动:x 的坐标减小,向右移动:x 的坐标增大;

2) 如果向上移动:y 的坐标减小,想下移动:y 的坐标增大;

这一讲我们就讲这些,下一讲我们将开始Android中关于游戏的几个重类,以及实现文字、图像和背景的绘制,最后让他们动起来。

敬请期待吧!!!

Android游戏快速入门(一):基础储备的更多相关文章

  1. Git 快速入门--Git 基础

    Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...

  2. Html与CSS快速入门02-HTML基础应用

    这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 示例 ...

  3. Html与CSS快速入门03-CSS基础应用

    这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 边框 ...

  4. 【笔记】PyTorch快速入门:基础部分合集

    PyTorch快速入门 Tensors Tensors贯穿PyTorch始终 和多维数组很相似,一个特点是可以硬件加速 Tensors的初始化 有很多方式 直接给值 data = [[1,2],[3, ...

  5. Android开发快速入门(环境配置、Android Studio安装)

    Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...

  6. Pytest系列(1) - 快速入门和基础讲解

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 目前有两种纯测试的测试框架, ...

  7. html快速入门(基础教程+资源推荐)

    1.html究竟是什么? 从字面上理解,html是超文本标记语言hyper text mark-up language的首字母缩写,指的是一种通用web页面描述语言,是用来描述我们打开浏览器就能看到的 ...

  8. SQLAlchemy 快速入门、基础知识

    SQLAlchemy 是Python 编程语言下的一款开源软件.提供了SQL工具包及对象关系映射(ORM)工具. ORM, 全称Object Relational Mapping, 中文叫做对象关系映 ...

  9. Android Dragger2快速入门浅析

    定Dagger2的基本介绍:dagger2是一个依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建. 使用Dagger2的好处:为了进一步解耦和方便测试,我们会使用依赖注入的方式构建对象 (不使 ...

随机推荐

  1. OpenJudge 2680 化验诊断 C++

    链接地址:http://bailian.openjudge.cn/practice/2680 题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 下表是进行血常规检验的正常值参考范围 ...

  2. N个数随机相加得出固定值的排列组合

    static double[] iArr = new double[10] { 1,2,3,4,5,6,7,8,9,10 }; static Stack<double> stack = n ...

  3. make menuconfig出错需要安装文件

    $ make menuconfig *** Unable to find the ncurses libraries or the *** required header files. *** 'ma ...

  4. Java security MD5加密算法

    利用java.security对字符串进行MD5加密: import java.security.MessageDigest; import java.security.NoSuchAlgorithm ...

  5. log4net 总结

    说实话,我并不是太想写这篇文章,因为我承诺过要完成博客园的部分功能,所以一直都在积极的利用下班时间来完善这个系统, 但是我又不想让看我源代码的朋友不知道我写的代码是什么意思,所以我还是单独写一个文章, ...

  6. 紧跟时代步伐,让我们拥抱MVC 3

    作为一个开发者,我们不希望技术很快的更新,这是因为我们还没有完全掌握原来技术的基础上,又要掌握新的技术,作为天天忙忙碌碌的程序员,我们不希望还要额外的时间来学习,尤其是当我们的年龄,逐渐的变大的时候, ...

  7. 纯原生js移动端图片压缩上传插件

    前段时间,同事又来咨询一个问题了,说手机端动不动拍照就好几M高清大图,上传服务器太慢,问问我有没有可以压缩图片并上传的js插件,当然手头上没有,别慌,我去网上搜一搜. 结果呢,呵呵...诶~又全是基于 ...

  8. AngularJS(4)-服务(Service)

    1.$location服务 $location 服务,它可以返回当前页面的 URL 地址 2.$http服务 $http 是 AngularJS 应用中最常用的服务. 服务向服务器发送请求,应用响应服 ...

  9. 之前可运行mongodb,后来却不行了显示Unclean shutdown detected mongodb

    解决办法有三个: 第一个:如果你之前可以运行,说明你已经有数据存放目录了,你可以把数据存放目录之前的数据清空再启动,在配置一下 第二个:使用mongod --repair --dbpath D:\Mo ...

  10. CentOS下shell显示-bash-4.1#不显示用户名路径的解决方法

    CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的username@hos ...