智能手机时代已经到来了,手机的性能正在以你我惊讶的速度提升。那么手机游戏也在迅速发展,从简单的平面单机游戏不断的向复杂的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. 设计模式------STRATEGY(策略模式)

    http://blog.csdn.net/wuzhekai1985/article/details/6665197.仅供参考. 策略模式:实现替换功能,如cache替换算法:当发生Cache缺失时,C ...

  2. sql2008存储过程解密。

    今天有一个同事在做一个项目的时候,因为现在公司不跟某一家公司合作.有一些sql的存储过程是加密,现在想打开那些存储过程来解密.故查看了一些资料终于解密成功.步骤如下: 1.需要开始DAC连接. 1.1 ...

  3. JavaScript基础-面向对象编程<2>

    2.动态添加,修改和删除对象属性和方法 例如:用类Object()创建一个空对象user,然后修改其行为. (1) 添加属性 var user=new Object(); //创建一个没有属性和方法的 ...

  4. bzoj2748:[HAOI2012]音量调节

    思路:刷水有益健康. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

  5. asp.net导出excel较为简约的代码

    ds为数据源 Response.Buffer = true; Response.AppendHeader("Content-Disposition", "attachme ...

  6. 网址、URL

    手册网:http://www.shouce.ren/ in_array().array_search().array_key_exists() http://www.shangxueba.com/ji ...

  7. centos svn安装

    http://fengjunoo.iteye.com/blog/1759265(参考) 以前在ubuntu上安装过一次svn,那次弄得有些麻烦. 这次记录下centos环境下安装svn的步骤 其实简单 ...

  8. 解决Ubuntu和Windows的文件乱码问题(转载)

    解决Ubuntu和Windows的文件乱码问题(debian也通用) 1.转换文件内容编码   Windows下天生的纯文本文件,其中文编码为GBK,在Ubuntu下显示为乱码,可以使用iconv命令 ...

  9. Make和Makefile

    无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  10. html5新增标签兼容性

    很多低版本的浏览器是不识html5新增的标签的,所以为了解决浏览器兼容性问题,主要有两种方法: js可以创建我们自定义的标签,例如,我们可以用js语句 document.createElement(' ...