- 博客(27)
- 资源 (1)
- 收藏
- 关注

原创 Java的死锁现象
很久以前学习Java的多线程机制时,一直没有搞懂Java的锁机制,今天花费了一整天的时间研究了一下。在学习的过程中发现一项非常有趣的问题,那就是死锁现象,下面是对死锁现象的完整描述:当A线程等待由B线程持有的锁时,而B线程正在等待A线程持有的锁,随即发生死锁现象,JVM不会检测也不试图避免这种情况,完全需要靠程序员自己注意。要避免死锁现象,我们首先需要搞清楚什么
2016-06-23 01:02:09
882

原创 关于《连连看》的算法研究和演示Demo
连连看曾经是一款非常受欢迎的游戏,同时它也是一款比较古老的游戏。看到这里你千万不要认为本篇文章打算讨论《连连看》的历史以及它取得的丰功伟绩。恰恰相反,在这篇文章中我们打算讨论该游戏背后的实现思想,包括它定义的游戏规则,以及游戏的实现算法。作为应用,我们还将利用Java代码实现一个通用的《连连看》算法,并使用Java Swing框架创建一个演示实例。1《连连看》的游戏规则是如何定义的?
2016-06-10 00:18:38
26996
5

原创 LibGDX教程——重建Flappy Bird——(8)屏幕切换与播放声音(终结)
正如标题上所标注的,本章将完成FlappyBird的所有剩余内容。对比原版游戏我们可以看到FlappyBird现在还两个界面,如下所示: LibGDX提供Game和Screen两个类使我们可以将游戏拆分为多个界面。Game实现了ApplicationListener接口,所以他也可以作为项目的主类(也就是共享项目的启动类)。而Screen是LibGDX提供的一个具有完整生命周期的界面
2016-01-26 00:32:11
2102

原创 LibGDX教程——重建Flappy Bird——(7) 添加GUI信息
上一章介绍我们基本已经完成FlappyBird的游戏逻辑,接下来在本章将添加一些GUI信息,如分数、按钮等。分数GUI 首先我们需要为WorldController维护一个int值表示当前玩家获得的分数。修改WorldController并添加相应的方法:...public class WorldController extends InputAdapter implements
2016-01-25 01:15:28
1114

原创 LibGDX教程——重建Flappy Bird——(6) 碰撞检测及细节处理
本章源码链接:http://pan.baidu.com/s/1o6Tt6VS密码:dvsc 上一章完整的介绍了BOX2D的物理仿真创建过程,在本章我们将继续完成BOX2D的剩余内容——碰撞检测。因为BOX2D帮我们完成了所有物理模拟过程,包括碰撞检测,这极大的降低我们的项目难度,我们不需要理解碰撞检测如何运行,甚至不需要知道任何碰撞检测算法,就能够完成碰撞检测并通知我们。下面就让我们为Flap
2016-01-23 22:18:55
2277

原创 LibGDX教程——重建Flappy Bird——(5) 添加Box2D物理仿真和游戏逻辑
在本章我们将为Flappy Bird添加BOX2D物理仿真,BOX2D物理仿真可以模拟现实世界物体的属性,如重力、速度、摩擦等等。在BOX2D中存在三种物理对象,分别是StaticBody、KinematicBody和DynamicBody,其中静态物体StaticBody只能模拟那些固定不动的对象且不能与StaticBody和KinematicBody类型物理对象发生碰撞。KinematicBo
2016-01-22 20:06:48
1740

原创 LibGDX教程——重建Flappy Bird——(4) 创建游戏对象
在本章,我们将为Flappy Bird项目创建一个可以显示的场景。该游戏场景由几个具有相同的属性和功能的游戏对象组成。但是,这些对象被渲染的方式却各有不同,简单的对象直接渲染其所分配的纹理,复杂的对象可能需要多个纹理组合渲染。创建游戏对象首先创建AbstractGameObject类,并添加下面代码:package com.art.zok.flappybird.game.object;
2016-01-20 23:16:50
1153

原创 LibGDX教程——重建Flappy Bird——(3) 打包资源
修改Android启动图标和名称首先,我们需要替换Android项目的默认启动图标。FlappyBird-android项目中存在一个名为res的特殊目录。在该目录中包含了Android项目专用的资源文件。展开res目录可以看到四个以drawable为前缀的文件夹:drawable-ldpi(低分辨率显示屏)drawable-mdpi(中分辨率显示屏)drawable-hd
2016-01-20 19:08:33
1464

原创 LibGDX教程——重建Flappy Bird——(2) 创建游戏框架
我们都知道Libgdx只是一个2D游戏框架,并不是游戏引擎,著名的AndEngine 2D游戏引擎就是基于Libgdx开发的,并且Flappy Bird原版就是使用AndEngine引擎开发的。所以我们必须先创建自己游戏引擎。创建UML类图首先我们详细分析Flappy Bird项目架构。我们使用类图帮助我们可视化项目结构并有组织有结构的理解项目构成。下面是该类图:上图中Flappy
2016-01-20 16:40:49
1015

原创 Libgdx教程——重建Flappy Bird——(1) 项目创建与导入
为了节省时间和篇幅,有关LibGDX的基础内容在本文将不会介绍。我们在本项目中使用的是旧版libgdx项目生成工具gdx-setup-ui.jar,虽然该工具是旧版,但是对于简单的项目来说该工具还是非常方便的。下面我们将通过该工具创建项目。首先双击打开该工具,如图所示:点击创建按钮,并输入相应的项目名称:其中Name表示项目名称,package表示包名,ga
2016-01-20 16:32:47
1188
原创 Android 有序广播与无序广播
1.无序广播和有序广播的定义无序广播是指由sendBroadcast方法发送的广播。有序广播是指由sendOrderedBroadcast方法发送的广播。2. 两者的区别
2016-08-21 14:11:54
703
原创 Android Activity任务栈
1. Activity任务栈Activity任务栈是Android对Activity界面的一种管理方式。任务栈,顾名思义就是“后进先出”,也就是说,当从一个Activity中启动一个新的Activity界面时,新界面将位于Activity栈的栈顶;当用户按下返回键时,系统将弹出栈顶的Activity并将上一个Activity置为栈顶,此时应用界面也就回到该Activity界面了,如果应
2016-08-20 19:33:44
1852
原创 Android 常见Action
1. 拨打电话的广播接收器的Action : 要求权限:2. 监听SD卡状态的广播接收器的Action : 安装SD卡: 卸载SD卡:无需权限,但必须设置数据类型:3. 接收短信的广播接收器的Action :要求权限:uses-permission android:name="android.permission.RECEIVE_SMS"/
2016-08-20 17:34:58
584
原创 Android Activity生命周期
1 完整生命周期一个Activity应该在onCreate()方法里执行设置“全局”状态(如定义布局),并在onDestroy()方法里释放所有剩余资源。onCreate()-->onStart()-->onResume()-->运行在最前端-->onPause()-->onStop()-->onDestory()2 可见生命周期在这两个方法,你可以保持该Activity需要展示
2016-08-20 13:01:54
457
原创 Android帧动画创建方法
1. 获取资源 首先需要获取帧动画的资源,然后利用工具将动画拆分成图片帧,最后将所有图片帧拷贝到drawable-xxx文件下:2. 创建动画 接下来,首先创建一个drawable资源文件,然后再该文件内创建一个名为run_girl_anim.xml文件,并且为该资源选择animation-list根,最后添加下面代码:<animation-list xmlns
2016-08-19 19:45:40
569
原创 Android对话框集合
1. 普通对话框new AlertDialog.Builder(this).setTitle("普通对话框").setMessage("对话框信息") .setPositiveButton("确定", new OnClickListener() { public void onClick(DialogInterface dialog, int which) {
2016-08-19 19:09:47
452
原创 android多国语言文件夹文件汇总
中文(中国):values-zh-rCN 捷克文:values-cs-rCZ中文(台湾):values-zh-rTW 丹麦文:values-da-rDK中文(香港):values-zh-rHK 德文(奥地利):values-de-rAT英语(美
2016-08-19 18:07:57
574
原创 Android ListView部分属性介绍
1. 设置ListView的分割线 * android:divider="#FFFF0000" * android:dividerHeight="2dp"2. 设置背景图片 * android:background="@drawable/ic_launcher" * android:scrollingCache="false"
2016-08-17 21:56:47
349
原创 JAVA IO流
在计算机编程中,IO是一项非常重要的内容。I表示Input,O表示Output,即输入/输出。这里所说的输入/输出都是站在应用程序的立场上讲的。输入和输出都必须有源和目标,对于输入,目标就是程序本身,源可能是文件、网络、内存空间、数据库等等。对于输出,上述情况刚好相反。一 、流的概念流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进
2016-06-30 21:08:11
739
原创 算法导论——最大子数组
import java.util.Arrays;import sun.applet.Main;public class MaxSubArray { private final static int MAX_VALUE = 10; private final static int LENGTH = 20; private static class Result {
2015-12-31 23:59:06
524
原创 算法导论——选择排序
import java.util.Arrays;public class SelectionSort { private final static int MAX_VALUE = 100; private final static int LENGTH = 10; public static void main(String[] args) {
2015-12-28 00:35:37
517
原创 算法导论-归并排序
import java.util.Arrays;public class MergeSort { private final static int MAX_VALUE = 1000; private final static int LENGTH = 100000; public static void main(String[] args) { int[] A = new
2015-12-21 20:57:05
597
原创 算法导论——JAVA实现“插入排序”算法
很简单,直接上代码:import java.util.Arrays;public class InsertionSort { private final static int MAX_VALUE = 100; private final static int LENGTH = 10; public static void main(String[] args) { in
2015-12-16 23:54:10
728
原创 Android 控件对带有Html标签的字符串用法
安卓控件对带有Html标签的字符串使用方法:1.直接在string的XML文件中定义,并在layout中直接引用。String中:Hello World!<b>Hello World!</b>控件中引用:<TextView android:id="@+id/textView" android:layout_width="
2015-12-08 17:34:57
2488
原创 Android编程——自定义View类onSaveInstanceState与onRestoreInstanceState使用方法
在很多时候我们为获得在视图中自由绘制的能力, 需要创建一个继承于View类的定制类,然后重写onTouchEvent方法处理触摸时间,重写onDraw绘制自定义视觉效果。但这里可能会被一个问题困扰,那就是设备旋转导致数据丢失的问题,好在View类为我们提供了onSaveInstanceState和onRestoreInstanceState两个方法,虽然这两个方法和Activity两个方法很相似,
2015-12-04 11:30:27
6937
原创 Android编程-IntentService使用广播与Activity通信
Android编程过程中,经常涉及到后台程序,一个长时间运行的后台程序使用Android提供的Service将是一个很好的选择,然而在众多Service中,IntentService最为常用,也最为简单,但是在使用IntentService时,将服务产生的结果反馈给Activity却不是一件容易的事情。一般情况下,Activity与Service通信有两种方法,其一是通过绑定Binder对象,
2015-11-30 20:12:51
4824
原创 java中使用字符串或者动态创建对象的三种方法(Class,Constructor,Proxy)
import java.lang.reflect.InvocationHandler;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.util.*;public class Metho
2015-08-09 16:13:56
6167
Libgdx(包含box2d)开发的PC版、Android版Flappy Bird
2016-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人