Android 网络游戏开发入门简单示例

news2024/7/5 22:59:07

在Android系统上开发是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬。那怎样开发Android网络游戏攻略呢?下面介绍一个简单的入门实例。

       一、创建新工程  

       首先,我们在Eclipse中新建一个名为Movement的工程,并且选择合适的Android SDK,在这里,我们选用的API是比较低的1.5版本,这样可以让其适应性更强。接下来,我们新建两个类,一个是UpdateThread类,一个是SurfaceView类,它们在项目中分别是负责处理线程和画面的两个类,在接下来会有详细介绍,如下图,分别建立这两个类,注意选择正确它们继承的父类:

 

 

 

  二、编写Movment.java启动程序

       任何一个Android应用都必须有一个主启动程序来启动,我们这里把这个启动程序命名为Movment,代码很简单如下:

Java代码

public class Movement extends Activity {  
 @Override 
 public void onCreate(Bundle savedInstanceState) {  
 
   super.onCreate(savedInstanceState);  
   setContentView(new MovementView(this));  
 }  

 注意的是,我们这个启动程序不象其他程序一样,在启动的时候,在setContentView中传入界面布局文件,而是直接将MovementView的实例传递进来,也就是说,直接启动了MovementView这个类,在这个类中,我们将绘画我们的小球。

       三、什么是SurfaceView

       在Android中,SurfaceView是一个重要的绘图容器,它可以可以直接从内存或者DMA等硬件接口取得图像数据。通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。

       如果需要在另外的线程绘制界面、需要迅速的更新界面或则渲染UI界面需要较长的时间,这种情况就要使用SurfaceView了。SurfaceView中包含一个Surface对象,而Surface是可以在后台线程中绘制的。

       在本文中,我们将使用它,直接通过代码创建一个小球,并且随着UpdateThread线程的更新,不断改变小球的位置,下面我们开始学习MovementView的编写,先看下如何运用SurfaceView。

       首先导入SurfaceView及绘图的相关库文件,如下所示:

Java代码

package example.movement;  
 
import android.content.Context;  
import android.graphics.Canvas;  
import android.graphics.Color;  
import android.graphics.Paint;  
import android.graphics.Rect;  
import android.view.SurfaceHolder;  
import android.view.SurfaceView; 

接着,我们要继承SurfaceView并且实现SurfaceHolder.Callback接口,这是一个SurfaceHolder的内部接口,可以实现该接口获得界面改变的信息,代码如下,并且我们声明了一些成员变量:

Java代码

public class MovementView extends SurfaceView implements SurfaceHolder.Callback { 

  private int xPos; 

  private int yPos; 

  

  private int xVel; 

  private int yVel; 

  

  private int width; 

  private int height; 

  

  private int circleRadius; 

  private Paint circlePaint; 

  

  UpdateThread updateThread; 

而在MovementView的构造函数中,我们设置了小球的大小和在X,Y方向上的初始坐标,如下: 

Java代码     

public MovementView(Context context) {   
  super(context);   
  getHolder().addCallback(this);   
   
  circleRadius = 10;   
  circlePaint = new Paint();   
  circlePaint.setColor(Color.BLUE);   
   
  xVel = 2;   
  yVel = 2;   
}   
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单工厂模式(java)

目录 结构 案例 类图 代码实现 简单咖啡工厂类 咖啡店类 咖啡类 具体咖啡类 简单工厂方法的优缺点 优点 缺点 结构 简单工厂包含如下角色: 抽象产品 :定义了产品的规范,描述了产品的主要特性和功能。具体产品 :实现或者…

前端 | (五)CSS三大特性及常用属性 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 文章目录 📚CSS三大属性🐇层叠性🐇继承性🐇优先级 📚CSS常用属性🐇像素的概念🐇颜色的表示⭐️表…

OCR学术前沿及产业应用高峰论坛202204

OCR学术前沿及产业应用高峰论坛 相关议程:https://mp.weixin.qq.com/s/LYoKHFad9D-gjhGlVF3Czg 广告OCR技术研究与应用-腾讯 视频制作ASR,ocr得到字幕 计算机动画CG OCR实践与技术创新 - 蚂蚁 loss优化 数据合成 对比学习的方式,什么样是…

让小程序动起来-轮播图的两种方式--【浅入深出系列002】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择啥是轮播图轮播图的关键代码最常见的轮播图代码便于理解的轮播代码两种轮播代码的比较 实际操练第一步,就是找到文件。第二步,先改动一下最显眼…

springboot整合feign实现RPC调用,并通过Hystrix实现降级

目录 一、服务提供者 二、服务消费者 三、测试效果 四、开启Hystrix实现降级功能 feign/openfeign和dubbo是常用的微服务RPC框架,由于feigin内部已经集成ribbon,自带了负载均衡的功能,当有多个同名的服务注册到注册中心时,会根…

数组前缀和

前缀和 前缀和就是指前缀的和,例如在数组中,从开始到 i 就是到 i 的前缀和。前缀和一般用来求中间连续某一段的和,例如sum[i] - sum[j - 1]就可以求出j 到 i 这一段的和。 在这一道题目里面,中间某一段连续子数组和为k&#xff0…

知识库分享|《快手电商中小商家成长指南》

《快手电商中小商家成长指南》致力于帮助快手电商平台的新商家、中小商家可以快速掌握电商经营流程,理解电商经营方法,提升电商经营能力,助力中小商家快速实现冷启。 ‼️ 包含中小商家冷启必备的六大板块两大方向: 基础操作、账…

SpringCloud(三)LoadBalancer负载均衡

一、负载均衡 实际上,在添加LoadBalanced注解之后,会启用拦截器对我们发起的服务调用请求进行拦截(注意这里是针对我们发起的请求进行拦截),叫做LoadBalancerInterceptor,它实现ClientHttpRequestIntercep…

JAVA的swing技术到底实用不实用?

文章目录 先说结论JAVA的知识范围那为什么还要学? 总结 先说结论 不实用 1 尚硅谷Java入门视频教程,宋红康java基础视频 必须要排在第一位。1600万的播放量呀。 717集 我的天啦! 目录: Java视频及配套资料下载指南 尚硅谷Java基…

有效的括号(C)

bool isValid(char* s) {ST st;StackInit(&st);while (*s) //遍历 -- 与\0终止{//是左括号 压栈if (*s ( || *s [ *s {){StackPush(&st, *s);s;}else{//应对样例: ’]if (StackEmpty(&st)){StackDestroy(&st);return false;}//不是左括号 应该就…

【Flink】详解Flink任务提交流程

启动一个任务 通常我们会使用 bin/flink run -t yarn-per-job -c com.xxx.xxx.WordCount/WordCount.jar 方式启动任务;我们看一下 flink文件中到底做了什么,以下是其部分源码 # Convert relative path to absolute path bindirname "$target"…

快速搭建机器学习demo: gradio教程

1. Intro gradio是一个能够快速建立机器学习demo web应用的工具,仅需简单的几行代码就能构建机器学习模型的可视化交互demo,并分享给你的朋友使用。 与gradio相同功能的竞品有Streamlit,相比Gradio,Streamlit相对复杂&#xff0…

热门二叉树面试题

606. 根据二叉树创建字符串 - 力扣(LeetCode) 给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&a…

Baichuan-13B:130亿参数的开源语言模型,引领中文和英文benchmark

Baichuan-13B: 一个强大的开源大规模语言模型 标题:Baichuan-13B:130亿参数的开源语言模型,引领中文和英文benchmark Baichuan-13B是由百川智能开发的一个开源大规模语言模型项目,包含了130亿参数。该模型在中文和英文的权威ben…

基于Nginx深入浅出亿级流量架构设计(更新至2023.7.18)

基于Nginx深入浅出亿级流量架构设计 环境准备/安装部署Nginx四个发行版本简单介绍Nginx的安装 Nginx的目录结构与基本运行原理及其最小配置解析Nginx虚拟主机与域名配置ServerName匹配规则反向代理在系统结构中的应用场景Nginx的反向代理配置基于反向代理的负载均衡器 环境准备…

自洽性改善语言模型中的思维链推理

自洽性改善语言模型中的思维链推理 摘要介绍对多样化路径的自洽实验实验设置主要结果当CoT影响效率时候,SC会有所帮助与现有方法进行比较附加研究 相关工作总结 原文: 摘要 本篇论文提出了一种新的编码策略——自洽性,来替换思维链中使用的…

【STM32】SPI屏幕刷图总结:GPIO模拟,硬件SPI,DMA+硬件SPI

文章目录 GPIO模拟SPI硬件SPI外设DMA硬件SPI外设总结 代码工程:https://github.com/liefyuan/stm32-spi-st7789-tft.git 前言 我的屏幕的分辨率是:240*320 驱动是:ST7789V 线驱动方式:四线SPI(CS,DC&#…

206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…

PageObject+Python+Appium

目录 前言: 简介 功能 常用目录 配置 实例 - 第一次启动 app 实例 - 登录 代码入口实例 结果展示 前言: Page Object模式是一种常用的设计模式,用于组织和管理自动化测试脚本中的页面对象。它将页面的元素和操作封装在一个独立的类…

数据质量相关问题系列

数据质量问题是什么? 数据质量,是指在业务环境下,数据符合数据消费者的使用目的,能满足业务场景具体需求的程度。而数据质量问题是指数据集中存在无法容忍的缺陷,从而降低该数据的可靠性和可信度。简单理解就是数据很脏…