做一款属于自己的体感游戏

本文介绍了如何利用智能手机的传感器,结合模式识别和socket通信,快速制作一款简单的体感游戏。通过Android手机上的三轴加速度计收集数据,经过算法处理后通过WiFi或蓝牙传送给PC,控制PC上的Qt游戏程序,如贪吃蛇。开发过程中,关键涉及Android传感器数据采集、socket通信以及简单的模式识别技术。
摘要由CSDN通过智能技术生成

体感游戏这个概念大家应该不陌生,不过要自己编一个体感游戏似乎有些困难,主要是人体动作的获取比较令人头疼。不过,智能手机的出现让这件事情变得简单了许多。现在我们用的手机里都有许多传感器,例如三轴加速度计,利用这些传感器就可以实现体感游戏的编写。

系统构架是这样的:

手机传感器信息采集——利用算法进行模式识别——利用wifi或蓝牙传给PC——实现PC游戏程序的操控

看起来并不复杂,是吗?我用了不到3个小时就编出了一个demo。传感器用的是Android手机上的三轴加速度计,通信是用的socket,PC上的游戏程序是用Qt现编的贪吃蛇,实现的功能是手持手机,通过手的运动来操控贪吃蛇。闲话不多说,下面放出关键代码:

首先是Android代码,主要是传感器数据采集、socket通信(不要忘记添加网络权限)。用的模式识别非常简单,直接判断某个方向上加速度的大小来辨别方向:

MainActivity.java

package com.example.test;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.List;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
	private SensorManager sm;
	private mylistener ml;
	private Socket so;
    protected void onCreate(Bundle savedInstanceState) {
    	sm = (SensorManager)getSystemService(SENSOR_SERVICE);
    	List<Sensor> kkk = sm.getSensorList(Sensor.TYPE_ALL);
    	ml = new mylistener();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView c = (TextView)(findViewById(R.id.view));
		String s = "";
        for (int i = 0;i < kkk.size();++i)
        	s += kkk.get(i).getName() + '\n';
        c.setText(s);
        new Thread() {
        	public void run(){
		        try {
					so = new Socket("192.168.1.104", 12345);
				} catch (UnknownHostException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	}
        }.start();
    }
    @Override
    protected void onResume() {
		Sensor sensor_orientation=sm.getDefaultSensor(Sensor.TYPE_
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值