「java手机游戏开发题目」用java开发游戏

博主:adminadmin 2023-03-20 04:04:09 403

今天给各位分享java手机游戏开发题目的知识,其中也会对用java开发游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用JAVA编一个小游戏或者其他程序

贪吃蛇程序:

GreedSnake.java (也是程序入口):

import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Container;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Iterator;

import java.util.LinkedList;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class GreedSnake implements KeyListener {

JFrame mainFrame;

Canvas paintCanvas;

JLabel labelScore;// 计分牌

SnakeModel snakeModel = null;// 蛇

public static final int canvasWidth = 200;

public static final int canvasHeight = 300;

public static final int nodeWidth = 10;

public static final int nodeHeight = 10;

// ----------------------------------------------------------------------

// GreedSnake():初始化游戏界面

// ----------------------------------------------------------------------

public GreedSnake() {

// 设置界面元素

mainFrame = new JFrame("GreedSnake");

Container cp = mainFrame.getContentPane();

labelScore = new JLabel("Score:");

cp.add(labelScore, BorderLayout.NORTH);

paintCanvas = new Canvas();

paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1);

paintCanvas.addKeyListener(this);

cp.add(paintCanvas, BorderLayout.CENTER);

JPanel panelButtom = new JPanel();

panelButtom.setLayout(new BorderLayout());

JLabel labelHelp;// 帮助信息

labelHelp = new JLabel("PageUp, PageDown for speed;", JLabel.CENTER);

panelButtom.add(labelHelp, BorderLayout.NORTH);

labelHelp = new JLabel("ENTER or R or S for start;", JLabel.CENTER);

panelButtom.add(labelHelp, BorderLayout.CENTER);

labelHelp = new JLabel("SPACE or P for pause", JLabel.CENTER);

panelButtom.add(labelHelp, BorderLayout.SOUTH);

cp.add(panelButtom, BorderLayout.SOUTH);

mainFrame.addKeyListener(this);

mainFrame.pack();

mainFrame.setResizable(false);

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainFrame.setVisible(true);

begin();

}

// ----------------------------------------------------------------------

// keyPressed():按键检测

// ----------------------------------------------------------------------

public void keyPressed(KeyEvent e) {

int keyCode = e.getKeyCode();

if (snakeModel.running)

switch (keyCode) {

case KeyEvent.VK_UP:

snakeModel.changeDirection(SnakeModel.UP);

break;

case KeyEvent.VK_DOWN:

snakeModel.changeDirection(SnakeModel.DOWN);

break;

case KeyEvent.VK_LEFT:

snakeModel.changeDirection(SnakeModel.LEFT);

break;

case KeyEvent.VK_RIGHT:

snakeModel.changeDirection(SnakeModel.RIGHT);

break;

case KeyEvent.VK_ADD:

case KeyEvent.VK_PAGE_UP:

snakeModel.speedUp();// 加速

break;

case KeyEvent.VK_SUBTRACT:

case KeyEvent.VK_PAGE_DOWN:

snakeModel.speedDown();// 减速

break;

case KeyEvent.VK_SPACE:

case KeyEvent.VK_P:

snakeModel.changePauseState();// 暂停或继续

break;

default:

}

// 重新开始

if (keyCode == KeyEvent.VK_R || keyCode == KeyEvent.VK_S

|| keyCode == KeyEvent.VK_ENTER) {

snakeModel.running = false;

begin();

}

}

// ----------------------------------------------------------------------

// keyReleased():空函数

// ----------------------------------------------------------------------

public void keyReleased(KeyEvent e) {

}

// ----------------------------------------------------------------------

// keyTyped():空函数

// ----------------------------------------------------------------------

public void keyTyped(KeyEvent e) {

}

// ----------------------------------------------------------------------

// repaint():绘制游戏界面(包括蛇和食物)

// ----------------------------------------------------------------------

void repaint() {

Graphics g = paintCanvas.getGraphics();

// draw background

g.setColor(Color.WHITE);

g.fillRect(0, 0, canvasWidth, canvasHeight);

// draw the snake

g.setColor(Color.BLACK);

LinkedList na = snakeModel.nodeArray;

Iterator it = na.iterator();

while (it.hasNext()) {

Node n = (Node) it.next();

drawNode(g, n);

}

// draw the food

g.setColor(Color.RED);

Node n = snakeModel.food;

drawNode(g, n);

updateScore();

}

// ----------------------------------------------------------------------

// drawNode():绘画某一结点(蛇身或食物)

// ----------------------------------------------------------------------

private void drawNode(Graphics g, Node n) {

g.fillRect(n.x * nodeWidth, n.y * nodeHeight, nodeWidth - 1,

nodeHeight - 1);

}

// ----------------------------------------------------------------------

// updateScore():改变计分牌

// ----------------------------------------------------------------------

public void updateScore() {

String s = "Score: " + snakeModel.score;

labelScore.setText(s);

}

// ----------------------------------------------------------------------

// begin():游戏开始,放置贪吃蛇

// ----------------------------------------------------------------------

void begin() {

if (snakeModel == null || !snakeModel.running) {

snakeModel = new SnakeModel(this, canvasWidth / nodeWidth,

this.canvasHeight / nodeHeight);

(new Thread(snakeModel)).start();

}

}

// ----------------------------------------------------------------------

// main():主函数

// ----------------------------------------------------------------------

public static void main(String[] args) {

GreedSnake gs = new GreedSnake();

}

}

Node.java:

public class Node {

int x;

int y;

Node(int x, int y) {

this.x = x;

this.y = y;

}

}

SnakeModel.java:

import java.util.Arrays;

import java.util.LinkedList;

import java.util.Random;

import javax.swing.JOptionPane;

public class SnakeModel implements Runnable {

GreedSnake gs;

boolean[][] matrix;// 界面数据保存在数组里

LinkedList nodeArray = new LinkedList();

Node food;

int maxX;// 最大宽度

int maxY;// 最大长度

int direction = 2;// 方向

boolean running = false;

int timeInterval = 200;// 间隔时间(速度)

double speedChangeRate = 0.75;// 速度改变程度

boolean paused = false;// 游戏状态

int score = 0;

int countMove = 0;

// UP和DOWN是偶数,RIGHT和LEFT是奇数

public static final int UP = 2;

public static final int DOWN = 4;

public static final int LEFT = 1;

public static final int RIGHT = 3;

// ----------------------------------------------------------------------

// GreedModel():初始化界面

// ----------------------------------------------------------------------

public SnakeModel(GreedSnake gs, int maxX, int maxY) {

this.gs = gs;

this.maxX = maxX;

this.maxY = maxY;

matrix = new boolean[maxX][];

for (int i = 0; i maxX; ++i) {

matrix[i] = new boolean[maxY];

Arrays.fill(matrix[i], false);// 没有蛇和食物的地区置false

}

// 初始化贪吃蛇

int initArrayLength = maxX 20 ? 10 : maxX / 2;

for (int i = 0; i initArrayLength; ++i) {

int x = maxX / 2 + i;

int y = maxY / 2;

nodeArray.addLast(new Node(x, y));

matrix[x][y] = true;// 蛇身处置true

}

food = createFood();

matrix[food.x][food.y] = true;// 食物处置true

}

// ----------------------------------------------------------------------

// changeDirection():改变运动方向

// ----------------------------------------------------------------------

public void changeDirection(int newDirection) {

if (direction % 2 != newDirection % 2)// 避免冲突

{

direction = newDirection;

}

}

// ----------------------------------------------------------------------

// moveOn():贪吃蛇运动函数

// ----------------------------------------------------------------------

public boolean moveOn() {

Node n = (Node) nodeArray.getFirst();

int x = n.x;

int y = n.y;

switch (direction) {

case UP:

y--;

break;

case DOWN:

y++;

break;

case LEFT:

x--;

break;

case RIGHT:

x++;

break;

}

if ((0 = x x maxX) (0 = y y maxY)) {

if (matrix[x][y])// 吃到食物或者撞到身体

{

if (x == food.x y == food.y)// 吃到食物

{

nodeArray.addFirst(food);// 在头部加上一结点

// 计分规则与移动长度和速度有关

int scoreGet = (10000 - 200 * countMove) / timeInterval;

score += scoreGet 0 ? scoreGet : 10;

countMove = 0;

food = createFood();

matrix[food.x][food.y] = true;

return true;

} else

return false;// 撞到身体

} else// 什么都没有碰到

{

nodeArray.addFirst(new Node(x, y));// 加上头部

matrix[x][y] = true;

n = (Node) nodeArray.removeLast();// 去掉尾部

matrix[n.x][n.y] = false;

countMove++;

return true;

}

}

return false;// 越界(撞到墙壁)

}

// ----------------------------------------------------------------------

// run():贪吃蛇运动线程

// ----------------------------------------------------------------------

public void run() {

running = true;

while (running) {

try {

Thread.sleep(timeInterval);

} catch (Exception e) {

break;

}

if (!paused) {

if (moveOn())// 未结束

{

gs.repaint();

} else// 游戏结束

{

JOptionPane.showMessageDialog(null, "GAME OVER",

"Game Over", JOptionPane.INFORMATION_MESSAGE);

break;

}

}

}

running = false;

}

// ----------------------------------------------------------------------

// createFood():生成食物及放置地点

// ----------------------------------------------------------------------

private Node createFood() {

int x = 0;

int y = 0;

do {

Random r = new Random();

x = r.nextInt(maxX);

y = r.nextInt(maxY);

} while (matrix[x][y]);

return new Node(x, y);

}

// ----------------------------------------------------------------------

// speedUp():加快蛇运动速度

// ----------------------------------------------------------------------

public void speedUp() {

timeInterval *= speedChangeRate;

}

// ----------------------------------------------------------------------

// speedDown():放慢蛇运动速度

// ----------------------------------------------------------------------

public void speedDown() {

timeInterval /= speedChangeRate;

}

// ----------------------------------------------------------------------

// changePauseState(): 改变游戏状态(暂停或继续)

// ----------------------------------------------------------------------

public void changePauseState() {

paused = !paused;

}

}

一套JAVA的初级题目,跪求各位大虾帮帮忙

1、 JAVA语言是由哪个软件公司开发?( B )

A、 sum B、sun C、IBM D、联想

2、 以下描述错误的是?( C )

A、 JAVA能编写独立运行的应用程序

B、 JAVA支持多线程

C、 JAVA是一网络应用软件

D、 JAVA能运行于windows 系统

3、程序中添加注释的作用?( B )

A、使得程序运行更高效

B、 增加程序的可读性和可理解性

C、 可以使用#号来注释

D、 提高程序编译的速度

4、HelloWorld.java编译成功后会在当前目录中生成一个什么文件?(B )

A、 Hello.java B、HelloWorld.class C、Helloworld.class D、helloWorld.class

5、编写一个java application程序,其中类声明为public class StringDemo,那么该程序应该以什么文件名来保存?( A )

A、StringDemo.java B、StringDemo.class C、Strindemo.java D、StringDemo.txt

6、以下描述正确的是?( C )

A、 JAVA不可以用来开发手机程序

B、 在JAVA程序中java.awt包是唯一自动引入的类库

C、 java.io包是JAVA语言的输入输出类库

D、 JAVA的包中可以有相同的类名

7、在声明变量时以下那个选项是不允许使用?( A )

A、char B、Int C、Hello D、Public

8、以下语句错误的是?( B )

A、int a=10; B、int ab=10.4f; C、float b=10; D、double c=10.0;

9、以下产生信息丢失的类型转换是?( B )

A、float a=10; B、int a=(int)884656565.0f; C、byte a=10;int b=a; double d=100;

10、以下运行符中属三元运算符的是?( C )

A、+ B、% C、条件运算符 D、*

11、以下关于数组的描述有误的是?( D)

A、 整型数组中的各元素的值必须是整型

B、 数组是有序数据的集合

C、 如数组名为ab,即ab.length可以取得该数组的长度

D、 数组的下标从1开始

12、以下对于标识符的描述有误的是?( D )

A、 常量用大写字母,变量用小写字母

B、 JAVA的标识符严格区分大小写

C、 第一个字符不是数字

D、 标识符中任何位置都不能用数字

13、以下描述有误的是?( B )

A、 package 包名;这个语句必须在程序的第一行。

B、 当方法用void声明时,方法必须返回一个整型的值

C、 return语句执行后,当前方法将被终止执行

D、 当方法用int声明时,方法必须返回一个整型的值

14、以下语句正确的是?( D)

A、x+1=5; B、i++=1; C、a++b=1; D、 x+=1;

15、以下结果为真(true)的是?( B )

A、10’a’ B、’a’20 C、 !true D、(35) (410)

16、int a=’2’; a的值是多少?(B )

A、1 B、50 C、49 D、2

17、’a’%3的值是多少?( D )

A、1 B、97 C、3 D、2

18、以下关于循环语句描述正确的是?( D )

A、 for循环不可能产生死循环

B、 while循环不可能产生死循环

C、 for循环不能嵌套while循环

D、 即使条件不满足do……while循环体内的语句也至少执行一次

19、以下对选择语句的描述错误的是?( )

A、 根据某一条件重复执行一部分代码直到满足终止循环条件为止

B、 可以根据条件控制程序流程,改变程序执行的顺序

C、 选择语句可以嵌套使用

D、 当条件满足时就会执行相应的语句

20、能判断出年份是否是闰年的选项是?( A )

A、 能被4整除且不能被100整除

B、 不能被4整除但能被100整除

C、 能4整除

D、 被100整除

一、 程序阅读题(每题6分)

1、

public class Kao

{

public static void main(String args[])

{

int a;

int i=1;

a=++i;

System.out.println("a="+a);

System.out.println("i="+i);

}

}

a的值是多少?i的值是多少?

a=2;i=2;

2、

public class Kao1

{

public static void main(String args[])

{

int a=7;

System.out.println(a+”的平方是:”+a*a);

}

}

输出结果是什么? 7的平方是:49

3、

public class Kao2

{

public static void main(String args[])

{

int sum=0;

for(int i=1;i=100;i+=2)

sum+=i;

System.out.println(sum);

}

}

sum的值最后是多少?2500

4、

public class Kao3

{

public static void main(String args[])

{

int a[]=new int[5];

for(int i=0;ia.length;i++)

a[i]=i+2;

for(int j=0;j4;j++)

System.out.println("a["+j+"]="+a[j]);

}

}

运行后程序显示结果是?

a[0]=2

a[1]=3

a[2]=4

a[3]=5

a[4]=6

5、

public class Kao4

{

public static void main(String args[])

{

int a=0650;

System.out.println(a);

}

}

在屏幕上输出的值是多少?424 //为什么是这样的情况呢?

二、 编程题 编写程序计算一个年份是否是闰年。

return ((year%4 == 0) (year%100 != 0)) || (year%400 == 0) ? true : false;

};

游戏工学, 研究生论文

J2ME手机游戏的开发-Beckham Goal

摘 要

J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案,并因其“Write Once, run anywhere”的Java特性而提高开发的效率。随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。本论文着眼于J2ME技术的应用,开发一款简单的手机游戏程序--Beckham Goal。 论文在分析了实现小游戏的相关基础技术及理论后,对该游戏进行了功能需求分析、模块划分及总体设计,解决了游戏中涉及的碰撞检查以及其他若干关键技术,最后在J2ME平台下实现了该小游戏,并通过验证达到预期的效果。

关键词:J2ME;手机游戏; K-Java;碰撞检查

1 引言

1.1 手机游戏概述

手机游戏几乎是当今市面上所有手机所必有的。在几年前的机型中,游戏都是手机中自带的,称为嵌入式游戏,由手机生产厂商设计并直接嵌入在手机里面。这样的游戏用户不能自行开发、添加及删除,其游戏种类取决于不同的机型,是一种单机游戏。随后的几年兴起了一种基于短信的游戏,由用户发送特定字符串给短信游戏提供商,来控制游戏的动作或剧情的发展。随着wap的兴起,出现了一种基于浏览器的游戏,和短信游戏差不多,由用户手机通过wap登录游戏提供商所提供的网址,然后填写或选择相应表单来操作游戏。上面两类游戏都是基于文本的,操作比较繁琐,游戏性不强。短信游戏每做一次操作(也就是发送一条短信)需要花费一毛钱;wap游戏无论是通过CSD上网还是通过GPRS上网都需要出上网费用。两种游戏的花费都比较高。现在新出的手机很大一部分都支持Java程序下载,而且这是一种趋势。由Java开发的游戏可以对图像进行操作,是动态的。而且可以接入网络,既可以开发单机游戏也可以开发网络游戏。随着彩屏手机的普及,游戏可以不再是黑白的,可随心所欲的为游戏中的不同物体赋予不同的颜色。

过去的手机是一个封闭的操作系统,除非用厂商自己的软件和工具,否则无法对手机的菜单进行改动,更无法在手机上附加其他应用。而K-Java技术的应用将摆脱这些传统的束缚,K-Java编写的应用程序可以兼容不同的网络协定,简单说就是,只要网络内容服务提供商提供K-Java服务,用户的K-Java手机就可以拥有无限扩充应用的能力。K-Java服务是一种新的移动数据业务的增值服务,它为用户提供了一个开放的平台,能更好地为用户提供全新图形化、动态化的移动增值服务。用户使用支持K-Java功能的手机终端,接入网络内容服务提供商的K-Java服务平台,可以通过手机随意下载Java应用软件,能方便地享受类似于Internet上的各种服务,如下载游戏、动漫、小说等,也可进行各种在线应用,如联网游戏、收发邮件、证券炒股、信息查询等。

1.2 Java手机游戏的发展现状

在欧美市场,由于较早采用GPRS技术,所以欧洲和美国运营商的K-Java也开展得较早,不过早期的应用并没能在个人消费市场激起太大的波澜。而日韩的无线数据业务从发展之初就将目标锁定在了游戏、娱乐等个人消费方面。K-Java技术能够利用手机有限的硬件条件使得PC上大量的互动性娱乐、游戏应用在手机上,正是凭借着这一技术特点,K-Java迅速成为了手机游戏的主流编程语言。在欧美市场,2002年此项业务的直接收入已经超过了2.45亿美元。

在中国,2003年2月15日,中国移动开始了大范围的K-Java应用测试。4月8日,无线K-Java服务被移动正式定名为“百宝箱”,并全面开始免费试用。而在发展较快的广东地区,更是从5月17日开始了大规模的K-Java业务推广,投入资金多达千万元。7月1日,中国移动宣布了“百宝箱”正式商用的消息,K-Java在中国市场的掘金旅程也将由此开启。但是,K-Java目前在中国的发展速度却不够快,主要的原因是用户群体不足。首先是终端不足。在市场上,能够支持K-Java的手机很少,而且几乎都是几个国外主流品牌,其定位也较高,而国内品牌,介于成本和技术,一般都不含K-Java功能。与此同时,大量已有手机的老用户不会因此功能而重新购置一台新的手机。其次,在拥有K-Java功能的手机用户群体中,懂得或者愿意使用K-Java的人却更少。所以,我们必须期待更多含有K-Java功能的面向各个消费群体的手机上市和普及,以及用户对手机附加功能使用意识的加强。

1.3 手机游戏的发展前景

由Juniper Research发布的最新调查说明,Java手机游戏在2008年将会获得超过63亿美元得收益。据IDC预计,仅在美国,整个手机无线游戏业务的硬件、软件以及服务所带来的收入在2006年将达到40亿美元,而更别说有着更大手机无线游戏市场潜力的日本、韩国和中国等亚洲市场。预计到2006年,全球的无线游戏市场总值将达170亿美元。研究机构Informa分析说,手机游戏是全球游戏市场中增长最快的部分,其产值将从2002年的2.43亿美元上升至2007年的38亿美元。英国市场研究机构AnalysysLtd在这份研究报告中称,随着彩屏智能手机的广泛应用和手机功能不断升级,游戏市场预期将从2002年的2亿欧元,至2008年时增长到接近30亿欧元。FrostSullivan研究公司指出,全球移动游戏业收入2008年将上升至93.4亿美元。Ovum公司则指出,到2006年,全球移动游戏业的价值将是44亿美元。比较保守的In-Stat/MDR研究公司也指出,无线游戏业的营收将以数十亿计,2006年将达到28亿美元。据StrandConsults公司预测,到2005年,预计手机移动游戏和娱乐的营收将会成为移动业务中利润最大的一项服务。来自众多研究公司的结果似乎都在表明:无线游戏将是下一个互联网金矿。

如今,从高档写字楼到青青校园,手机无处不在,手机如今已成为都市时尚文化和消费主义的象征。本来手机只是用来通话,后来可以发短信,现在当人们空闲无聊时候,手机用户们将会转向那些提供游戏和娱乐的服务的功能也就显现出来了。

随着2.5G和3G的大发展,彩屏手机今年包括今后几个将会逐步取代黑白手机,后几年的时间里,彩屏手机将具有类似GameBoys游戏机的功能。更重要的是随着数据业务的成熟,寄托于移动通信网络与移动终端的无线游戏,使手机游戏由单机游戏迅速的过渡到了类似于电脑上网络游戏的时代。

Java将成为无线游戏发展的中坚力量,由Java所开发的手机游戏将占据巨大的市场分额。

2 J2ME的概述与相关理论基础

2.1 J2ME的简介

J2ME 是Sun微系统公司流行Java编程语言的紧凑版本。很多人没有意识到Java作为一种语言刚刚发明的时候是为了用来进行移动设备编程的,于是,它最终以J2ME的形式来实现这个目的。J2ME包括一组开发工具和丰富的应用程序接口(API)以供开发手机应用程序,人们称之为MIDlet。

J2ME也包括K虚拟机,它负责协助Java字节码在每个具体手机上的执行。依靠通用的字节码而不是本地应用程序代码,J2ME就能够开发你的游戏的基本代码,并且能够移植到不同的手机而不需要费太大力气。事实上,如果不需要改变屏幕尺寸和图形显示能力,在J2ME手机之间移植一个游戏所需要的工作几乎是零。

在美国的手机制造商中,J2ME享受着最广泛的工业支持。在市场上,Motorola,Nakia,Research In Motion(RIM)和Samsung等业界巨头都有功能基于J2ME的手机。

java编程题目,求求大佬救救我

这个题考察的是面向对象三大特性之一的继承。

子类继承父类。

项目结构如何所示:

Mobile 为父类,有一个属性:mobilePhone 代表电话号码。

有4个方法(功能):

1、获取手机号码:public String getMobilePhone(){}

2、存储手机号码:public void setMobilePhone(String mobilePhone) {}

3、拨打电话号码:public void callOnMobilePhone(){}

4、挂断电话:public void callOffPhone(){}

具体代码如下所示:、

--------------------------------------mobilePhone 开始--------------------------------------

/**

* @author 冯修远

* 创建一个第一代手机类,要求包含手机号码信息,并包含获取电话号码,

* 存储电话号码、拨打电话号码和挂断电话等功能。并以此为父类,派生

* 出子类第二代手机类,增加拍照功能。以第二代手机类来生成对象并

* 模拟实现拨打电话、挂断电话拍照等功能。

*/

public class Mobile {

//手机号码

private String mobilePhone;

/**

* 获取手机号码

* @return

*/

public String getMobilePhone() {

return mobilePhone;

}

/**

* 存储手机号码

* @param mobilePhone

*/

public void setMobilePhone(String mobilePhone) {

this.mobilePhone = mobilePhone;

}

/**

* 拨打电话号码

*/

public void callOnMobilePhone(){

System.out.println("拨打电话号码:"+mobilePhone);

}

/**

* 挂断电话

*/

public void callOffPhone(){

System.out.println("挂断与:"+mobilePhone+"的通话");

}

}

--------------------------------------mobilePhone 结束--------------------------------------

PhotoMobile 为子类或者叫派生类,继承自父类:Mobile

同时也继承了父类的4个方法,但父类的属性因为我设置的是private,所以继承不了。

PhotoMobile 的代码如下图所示:

最后一个类,也就是测试类,用于创建第二代手机的对象,并调用相应的功能,如下图所示:

最终,程序的运行结果如下图所示:

我是冯修远,如果我的答案对您有帮助的话,请采纳以帮助更多的人,如果还有其它的问题,也请关注我,私信我,谢谢!

有一款修建金字塔的2D java游戏,一块砖从一层开始接力往上扔是什么?

根据描述,这款游戏应该是法老神迹,是当年JAVA上一款很热门的游戏。

java手机游戏在智能机出现之前可谓红极一时,只要是支持java程序的手机都可以安装,众多手机小游戏都由java开发。

由于java手机游戏的通用性太强,在智能机普及之前,是否支持java成为顾客选择手机的一个重要因素。java手机游戏开发一次便可适用绝大部分机型,直到今天手机网游还一直用java进行开发。

java是由由Sun 公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。java手机游戏属于javame,又称j2me或者kjava,它依靠自身强大的可拓展性和移植性,成为目前手机上最通用的一种游戏。

JAVA游戏缺点:

虽然游戏可移植性强,通用性强,但是当开发者面对众多机型,分辨率的时候,适配不同的手机成为大问题,而其对内存的消耗相比其他语言的手机游戏也更加难以控制,由于语言的限制,使得java游戏难以做出太动感的画面如3D效果等。随着安卓和iphone市场的兴起,java手机游戏在渐渐没落。

有关java开发游戏毕业设计的开题报告

首先介绍了手机游戏开发的背景、目的、意义和手机游戏开发的国内外现状等,接着介绍了手机游戏的特征、类型,以及手机游戏开发的基本原则等。

此外,还详细介绍了手机游戏的开发语言Java和开发平台J2ME,讲述了如何搭建J2ME平台,为读者了解手机游戏开发和设计打下了一定的基础,同时也讲述了有关Eclipse和MIDP应用程序的一些知识。

接着在本文中介绍了手机游戏程序的结构、思想以及相关技术,主要是介绍了几个主要的类:Canvas类和Graphics类,还有介绍了程序中的绘图技术、混淆器的使用、模拟器的调试等。

最后本文介绍了手机游戏程序的代码编写和程序结构等,让读者对本文的手机游戏程序有了一个概括性的了解。

关键词:J2ME,Java,Ecilpse,手机游戏,MIDP ABSTRACT

This article introduces something about mobile telephone game.For example, the background and the objective and the meaning of it,and the developing status in in-country and out-country.And then introduces the character and the style of telephone game and the basic principle of telephone game exploitation.

And then this article introduces Java language and J2ME flat of telephone game exploitation, also narrate how to build J2ME flat. That would be propitious to reader to make a design.And this article also introduces something about Eclipse and MIDP application in addition.

In succession,this article introduces the configuration and idea and correlation technique of telephone games development.Mainly comes down to Canvas and Graphics,and plot technic in games,and how to use Obfuscator and how to debug simulator.

Finally,this article explains the code of telephone games and the program structure,readers will be understands the phone games in this article.

Keyword:J2ME,Java,Eclipse,telephone game,MIDP

目 录

1.绪 言 5

1.1 手机游戏研究的背景 5

1.2 手机游戏研究的目的和意义 5

1.3 手机游戏的国内外现状 6

1.4 手机游戏概述 7

1.4.1 手机游戏特征 7

1.4.2 手机游戏的类型 8

1.4.3 手机游戏设计的基本原则 8

2.开发环境及相关技术的介绍 10

2.1 JAVA语言特点 10

2.2 J2ME概述 10

2.3 J2ME体系结构 11

2.4 关于ECLIPSE 13

2.5 J2ME开发环境的搭建 13

2.6 MIDP应用程序 14

2.7 JAVA APPLICATION MANAGER 14

3.程序结构、思想和相关技术 15

3.1 本程序需解决的有关技术问题 15

3.2 程序流程图 15

3.3 绘图与MIDP2.0新增的GAMECANVAS包 16

3.3.1 Canvas类 17

3.3.2 Graphics类 17

3.3.3 PNG格式 17

3.3.4 有关绘图的一些技术 18

3.4 内存使用最佳化 18

3.5 混淆器(OBFUSCATOR)的使用 19

3.6 模拟器的调试 19

4.程序分析和编写手机代码 20

4.1 进入游戏前的选择 20

4.2 主游戏逻辑及其涉及到的若干类 20

4.2.1 程序的菜单选项 20

4.2.2 游戏的设定 21

4.2.3 游戏的界面绘制 24

4.2.4 游戏中板的出现和小人位置的检测 25

6.总结与展望 26

7.致 谢 27

参考文献 28

关于java手机游戏开发题目和用java开发游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。