智能手机时代已经到来了,手机的性能正在以你我惊讶的速度提升。那么手机游戏也在迅速发展,从简单的平面单机游戏不断的向复杂的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. .NET 4 新建 webform 项目编译不通过

    .NET 4 新建 webform 项目编译不通过,可能需要做如下改动. 一.根据编译错误,删除 packages.config 中相关包 二.安装包install-package Microsoft ...

  2. touches,motion触摸事件响应

    //触摸事件响应需要重写方法 1 // 触摸时触发该方法(消息发送) - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent: ...

  3. 在centos7中限制kvm虚拟机可访问的资源

    最近通过艰苦卓绝的度娘(我很想用谷歌,可是,你懂的),终于搞明白如何在centos7中限制kvm虚拟机可访问的资源了.度娘给出的结果中,大部分都说的很对,然而,却很难照着做,主要原因有两点:1.网上的 ...

  4. HDU 4762 Cut the Cake

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4762 题目大意:将n个草莓随机放在蛋糕上,草莓被看做是点,然后将蛋糕平均切成m份,求所有草莓在同一块蛋 ...

  5. java File详解

    一.简介 File类是“文件”和“目录名”的抽象表示形式.因此在java语言中,File类既可以表示文件也可以表示目录. 尽管java.io定义的大多数类是实行流式操作的,而File类则不是,它没有指 ...

  6. C#对word、excel、pdf等格式文件的操作总结

    一.word 这是我以前工作时写过的一个业务逻辑处理类,里面有不少文件操作的方法,这里主要关注一下C#对word的操作.里面的方法可以直接拿出来用,主要是通过word的dot模版来进行创建word.替 ...

  7. VB winform自动更新 笔记

    看网上各种自动更新方法,最后自己找了个比较简单的,在此做个笔记. 服务器上的共享盘里存放生成的可执行文件和XML格式的配置: <?xml version="1.0" enco ...

  8. postal.js使用

    requirejs.config({ //默认情况下模块所在目录为js/lib baseUrl: './', //当模块id前缀为app时,他便由js/app加载模块文件 //这里设置的路径是相对与b ...

  9. 解决IE6下Position:fixed问题(只用css)

    在IE6.0及以下版本的浏览器里是不支持position:fixed.而在IE7,IE8,firefox,opera,chrome都可以完美的支持此特性的.解决此问题的要点主要有: 1).容器要有一个 ...

  10. FireMonkey消息机制

    interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, FMX.Forms, FMX.Plat ...