- 浏览: 335660 次
- 性别:
- 来自: 温州
文章分类
最新评论
-
helloworldlove:
Axis_UNZIP_PATH\Axis-version\we ...
3步把您的java程序转换为webservice -
hcqenjoy:
这个工具能再提供下吗 已经没办法下载了 谢谢
汉化 Flex Builder 3 帮助文档 -
NASa_CJ:
String source = HttpClientExamp ...
利用HttpClient获取网页内容 -
zlsj80:
下载地址无效了,楼主修正一下吧
汉化 Flex Builder 3 帮助文档 -
fykyx521:
下载地址都不能用了,是不过时了
汉化 Flex Builder 3 帮助文档
int color = g.getColor();<o:p></o:p>
g.setColor( COLOR_WHITE );<o:p></o:p>
g.drawRect( x, y, width, height );<o:p></o:p>
g.setColor(c);<o:p></o:p>
g.fillRect( x + 1, y + 1, width-2, height-2 );<o:p></o:p>
g.setColor( COLOR_BLACK );<o:p></o:p>
g.drawLine( x + width-1, y, x + width-1, y + height-1 );<o:p></o:p>
g.drawLine( x, y + height-1, x + width-1, y + height-1 );<o:p></o:p>
g.setColor(color);<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public static boolean drawText(Graphics g, String str, int x, int y, int anchor, int color, int size) {<o:p></o:p>
Font f_old,f_new;<o:p></o:p>
int c_old;<o:p></o:p>
try {<o:p></o:p>
f_old = g.getFont();<o:p></o:p>
f_new = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,size);<o:p></o:p>
g.setFont(f_new);<o:p></o:p>
c_old = g.getColor();<o:p></o:p>
g.setColor(color);<o:p></o:p>
<o:p></o:p>
g.drawString(str, x, y, anchor );<o:p></o:p>
<o:p></o:p>
g.setColor(c_old);<o:p></o:p>
g.setFont(f_old);<o:p></o:p>
<o:p></o:p>
return true; <o:p></o:p>
}catch (Exception ex) {<o:p></o:p>
return false;<o:p></o:p>
}<o:p></o:p>
} <o:p></o:p>
<o:p></o:p>
protected void paint(Graphics g){<o:p></o:p>
//画背景<o:p></o:p>
try{<o:p></o:p>
Image image_Splash = Image.createImage("/back.png");<o:p></o:p>
g.drawImage(image_Splash, 0, 0,Graphics.TOP | Graphics.LEFT);<o:p></o:p>
}<o:p></o:p>
catch(Exception ex) {<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
//画下一个要出现的方块<o:p></o:p>
drawText(g, "下一个", 91, 5, Graphics.TOP| Graphics.LEFT, COLOR_BLUE, Font.SIZE_SMALL);<o:p></o:p>
g.setColor(COLOR_GRAY);<o:p></o:p>
g.drawRoundRect(91, 18, 26, 30, 2, 2);<o:p></o:p>
g.setColor(COLOR_DARK_GRAY);<o:p></o:p>
g.fillRoundRect(92, 19, 24, 28, 2, 2);<o:p></o:p>
for(int i=0;i<=3;i++)<o:p></o:p>
draw3DBlock(g, BlockInfo[FutureBlockType][8],<o:p></o:p>
93+BlockInfo[FutureBlockType][i*2+1]*BLOCK_SIZE,<o:p></o:p>
20+BlockInfo[FutureBlockType][i*2]*BLOCK_SIZE,<o:p></o:p>
BLOCK_SIZE,BLOCK_SIZE); <o:p></o:p>
<o:p></o:p>
drawText(g, "速度:"+String.valueOf(CurSpeed), 91, 60, Graphics.TOP| Graphics.LEFT, COLOR_BLUE, Font.SIZE_SMALL);<o:p></o:p>
drawText(g, "行数:"+String.valueOf(BlockLines), 91, 75, Graphics.TOP| Graphics.LEFT, COLOR_BLUE, Font.SIZE_SMALL);<o:p></o:p>
drawText(g, "成绩:", 91, 90, Graphics.TOP| Graphics.LEFT, COLOR_BLUE, Font.SIZE_SMALL);<o:p></o:p>
g.setColor(COLOR_GRAY);<o:p></o:p>
g.drawRoundRect(91, 105, 26, 20, 2, 2);<o:p></o:p>
g.setColor(COLOR_DARK_GRAY);<o:p></o:p>
g.fillRoundRect(92, 106, 24, 18, 2, 2); <o:p></o:p>
drawText(g, String.valueOf(BlockScore), 93, 107, Graphics.TOP| Graphics.LEFT, COLOR_WHITE, Font.SIZE_MEDIUM);<o:p></o:p>
<o:p></o:p>
//画当前战况<o:p></o:p>
for(int i=0;i<CANVAS_SIZE_HEIGHT-1;i++)<o:p></o:p>
for(int j=1;j<CANVAS_SIZE_WIDTH-1;j++)<o:p></o:p>
if (Gridmatrix[i][j]!=0)<o:p></o:p>
draw3DBlock(g,Gridmatrix[i][j],CANVAS_OFFSET_X+j*BLOCK_SIZE,<o:p></o:p>
CANVAS_OFFSET_Y+i*BLOCK_SIZE,<o:p></o:p>
BLOCK_SIZE,BLOCK_SIZE);<o:p></o:p>
<o:p></o:p>
if (!ISDOWN){<o:p></o:p>
//画上新的方块<o:p></o:p>
LastX=BlockX; LastY=BlockY; LastType=BlockType;<o:p></o:p>
for(int i=0;i<=3;i++)<o:p></o:p>
draw3DBlock(g,BlockInfo[BlockType][8],<o:p></o:p>
CANVAS_OFFSET_X+BlockX*BLOCK_SIZE+BlockInfo[BlockType][i*2+1]*BLOCK_SIZE,<o:p></o:p>
CANVAS_OFFSET_Y+BlockY*BLOCK_SIZE+BlockInfo[BlockType][i*2]*BLOCK_SIZE,<o:p></o:p>
BLOCK_SIZE,BLOCK_SIZE);<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
private boolean feasible(){<o:p></o:p>
for(int i=0;i<=3;i++)<o:p></o:p>
if (Gridmatrix[BlockY+BlockInfo[BlockType][i*2]][BlockX+BlockInfo[BlockType][i*2+1]]!=0)<o:p></o:p>
return false;<o:p></o:p>
return true;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
private void delline(){<o:p></o:p>
for(int i=0;i<=3;i++)<o:p></o:p>
Gridmatrix[BlockY+BlockInfo[BlockType][i*2]][BlockX+BlockInfo[BlockType][i*2+1]]=BlockInfo[BlockType][8];<o:p></o:p>
int temp=4;<o:p></o:p>
boolean CanSkip=false; <o:p></o:p>
int i=CANVAS_SIZE_HEIGHT-2;<o:p></o:p>
while((temp>0)&&(i>=1)){ <o:p></o:p>
CanSkip=false;<o:p></o:p>
label1: for(int j=1;j<=CANVAS_SIZE_WIDTH-2;j++){<o:p></o:p>
if (Gridmatrix[i][j]==0) {CanSkip=true; i--; break label1;}<o:p></o:p>
}<o:p></o:p>
if (!CanSkip){<o:p></o:p>
temp--;<o:p></o:p>
for(int k=i;k>=1;k--)<o:p></o:p>
for(int l=1;l<=CANVAS_SIZE_WIDTH-2;l++)<o:p></o:p>
Gridmatrix[k][l]=Gridmatrix[k-1][l];<o:p></o:p>
BlockLines++;<o:p></o:p>
BlockScore+=200;<o:p></o:p>
if((BlockScore%2000)<200) CurSpeed++; <o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public void run() {<o:p></o:p>
while (Blocker != null) {<o:p></o:p>
if(!ISDOWN){<o:p></o:p>
BlockY++;<o:p></o:p>
if (!feasible()) {<o:p></o:p>
ISDOWN=true; BlockY--; delline();<o:p></o:p>
try {Thread.sleep(400);} catch (InterruptedException e){}<o:p></o:p>
}<o:p></o:p>
else{<o:p></o:p>
repaint();<o:p></o:p>
try {Thread.sleep(950-100*(int)BlockSpeed);} catch (InterruptedException e){}<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
else{ BlockScore+=50;<o:p></o:p>
if((BlockScore%2000)<50) CurSpeed++; <o:p></o:p>
ISDOWN=false;<o:p></o:p>
repaint();<o:p></o:p>
BlockSpeed=CurSpeed;<o:p></o:p>
BlockType=FutureBlockType;<o:p></o:p>
FutureBlockType=Math.abs(generator.nextInt()%19);<o:p></o:p>
BlockX=4; LastX=BlockX;<o:p></o:p>
BlockY=0; LastY=BlockY;<o:p></o:p>
if (!feasible()) { init();}<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
Blocker = null;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
protected void keyPressed(int keyCode) {<o:p></o:p>
//处理按下键盘的事件,这是Canvas的实例方法<o:p></o:p>
switch (getGameAction(keyCode)) {//将按键的值转化成方向常量<o:p></o:p>
case Canvas.UP://向上<o:p></o:p>
<o:p></o:p>
break;<o:p></o:p>
case Canvas.DOWN://向下<o:p></o:p>
BlockY++;<o:p></o:p>
if (!feasible()) BlockY--;<o:p></o:p>
repaint();<o:p></o:p>
BlockSpeed=9;<o:p></o:p>
//Blocker.run();<o:p></o:p>
break;<o:p></o:p>
case Canvas.LEFT://向左<o:p></o:p>
BlockX--;<o:p></o:p>
if (!feasible()) BlockX++;<o:p></o:p>
break;<o:p></o:p>
case Canvas.RIGHT://向右<o:p></o:p>
BlockX++; <o:p></o:p>
if (!feasible()) BlockX--; <o:p></o:p>
break;<o:p></o:p>
case Canvas.FIRE:<o:p></o:p>
int tempBlockType=BlockType; <o:p></o:p>
if (BlockType==1) BlockType=-1;<o:p></o:p>
else if (BlockType==3) BlockType=1;<o:p></o:p>
else if (BlockType==5) BlockType=3;<o:p></o:p>
else if (BlockType==6) BlockType=5;<o:p></o:p>
else if (BlockType==10) BlockType=6;<o:p></o:p>
else if (BlockType==14) BlockType=10;<o:p></o:p>
else if (BlockType==18) BlockType=14;<o:p></o:p>
BlockType++; <o:p></o:p>
if (!feasible()) BlockType=tempBlockType; <o:p></o:p>
break;<o:p></o:p>
default:<o:p></o:p>
break;<o:p></o:p>
}<o:p></o:p>
repaint(); return;<o:p></o:p>
} <o:p></o:p>
}
发表评论
-
Java 5.0 多线程编程实践
2006-01-23 13:20 771<noscript type="text/ja ... -
web开发框架——JSF开发实战
2006-01-23 20:01 1422JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最 ... -
Tomcat 的数据库连接池设置与应用
2006-01-23 20:28 7691.将数据库驱动程序的JAR文件放在Tomcat的 commo ... -
Eclipse Plugins Manager Beta 0.1 (Link's Only) 发布
2006-03-18 17:11 789<noscript type="text/ja ... -
常青图书管理系统 BETA V0.1
2006-03-19 15:03 838<noscript type="text/ja ... -
Java程序的性能优化
2006-03-19 15:15 804<noscript type="text/ja ... -
Java中四种XML解析技术之不完全测试
2006-03-20 12:16 696<noscript type="text/ja ... -
解决Tomcat中文乱码问题
2006-03-26 22:58 866一、中文问题的来源 计算机最初的操作系统支持的编码是单 ... -
Swing技巧. 设置全局字体(sun jdk)
2006-04-02 14:04 1341S ... -
Dom4j 使用简介
2006-04-05 20:19 673DOM4J是dom4j.org出品的一个开源XML解析包 ... -
Java手机技术 之 J2ME及其基本慨念
2006-04-06 12:42 725如果您曾经http://www.javasoft.com ;网 ... -
Java手机技术 之 J2ME新手入门要点
2006-04-06 12:50 1001一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
JAVA设计模式系列之Singleton模式
2006-04-06 13:18 828单态定义: Singleton模式主要作用是保证在Java应 ... -
高手指点你实战体会Java的多线程编程
2006-04-06 13:39 835在 Java 程序中使用多线程要比在 C 或 C++ 中容 ... -
Java基础--JSP应用语法详解大全
2006-04-06 13:49 9001)HTML注释: 可以用注释内容,也可以用表达式. 2) ... -
javamail使用完全手册
2006-04-08 20:44 8751,哪里是开始:初始环境,安装好你的j2sdk和你的web服务 ... -
JavaMail通过sina的smtp验证
2006-04-08 20:47 1122import javax.mail.*;import java ... -
用javamail发送邮件
2006-04-08 20:49 996用javamail发送邮件 aistill(原作) ... -
修改后可以发送附件、抄送、密送的javabean
2006-04-08 20:51 932/**A ... -
javamail实现smtp身份认证
2006-04-08 20:57 950现在大多 ...
相关推荐
但它们必须在`synchronized`代码块或方法中使用。 三、线程优先级 J2ME中的线程优先级通过`setPriority()`方法设置,有三个级别:`Thread.MIN_PRIORITY`(最低),`Thread.NORM_PRIORITY`(默认),和`Thread.MAX_...
在Java Micro Edition (J2ME)中,线程和网络编程是两个至关重要的概念,尤其对于开发移动设备上的应用程序来说。J2ME为资源有限的设备提供了轻量级的Java平台,因此理解和掌握这两个主题是编写高效、响应式以及能够...
Java 2 Micro Edition(J2ME)是Java平台的一个重要分支,专为资源有限的嵌入式设备设计,包括移动电话、智能家电、数字电视等。本教程将深入讲解J2ME在手机程序开发中的应用,帮助开发者掌握这一核心技术。 ### ...
在J2ME中,多线程的使用可以实现游戏的流畅运行,例如,一个线程负责游戏的图形渲染,另一个线程则处理用户的输入事件,这样即使在复杂的交互中,游戏画面也不会出现卡顿。 对于新手开发者来说,了解并实践多线程是...
**J2ME API 2.0 - J2ME使用手册 - J2ME帮助文档** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的设备如移动电话、智能手表和家用电器等设计。J2ME API 2.0 提供了在这些小型设备上开发应用...
j2me写的秒表程序,使用多线程,对于初学者是一个很好的例子。。。
Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机和智能家电。MIDP(Mobile Information Device Profile)2.0是J2ME中的一个重要配置,它提供了在这些小型设备上开发应用...
1. **合理使用数据结构**:J2ME中的数据结构如ArrayList和Vector在内存管理上不如Java SE高效。考虑使用数组代替ArrayList,避免动态扩容带来的性能开销。对于小规模的数据存储,可以考虑使用哈希表或者简单的数组...
在J2ME中,我们通常使用Canvas类作为画布,绘制游戏的各个元素。Canvas继承自Displayable,允许我们自定义绘制函数,实现游戏画面的更新。例如,在飞机游戏中,我们需要绘制飞机、敌人、子弹以及背景等元素。 事件...
6. **多线程编程**:J2ME中的线程管理对于实现后台任务和提升用户体验至关重要。 7. **网络服务集成**:如XML解析、SOAP通信,以及与Web服务的交互。 8. **资源管理**:在有限的内存和存储条件下,有效地管理和...
Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于开发和部署嵌入式设备、移动设备以及消费电子产品的应用程序。本教程将深入探讨J2ME的基础概念、开发环境、应用模型以及实际开发过程中的关键技术和技巧...
2. **图形和用户界面**:详细介绍如何使用J2ME的Graphics类进行2D图形绘制,包括线条、形状、颜色填充以及图像的加载和显示。同时,还会讨论如何创建和管理用户界面组件,如按钮、文本框等。 3. **事件处理**:探讨...
7. **线程管理**:J2ME的线程模型不同于Android,需要适应Android的AsyncTask或Thread/Handler机制。 8. **性能优化**:Android设备性能各异,移植时需注意内存管理和性能优化,避免在Android上出现J2ME中的性能...
5. **类与方法**:源码中可能包含对J2ME API的多种使用,如网络通信(利用HttpConnection和DataInputStream/OutputStream进行HTTP请求),文件I/O(FileConnection API),以及线程管理(Thread类)。 6. **事件...
理解如何在J2ME中使用精灵对于创建动态、交互式的用户体验至关重要。 1. **精灵的概念**: - 精灵是一种二维图形对象,可以在游戏场景中独立移动和动画化。它们通常由多个帧组成,通过快速切换帧来创建连续的动作...
在Java 2 Micro Edition (J2ME)平台上开发应用程序时,常常会遇到用户需要等待联网操作或线程执行完毕的情况,比如数据下载、文件上传等。这种情况下,为用户提供一个可视化的进度条能够显著提高用户体验,让用户...
本文将详细介绍如何在Android环境中使用J2ME MIDP 2.0的Game API,特别是四个关键工具类:Layer、LayerManager、Sprite和TiledLayer。 **Layer** 类在MIDP 2.0中是一个基础组件,它代表了一个可绘制的平面层。Layer...
2. **Eclipse IDE**: 另一个广泛使用的IDE是Eclipse,它同样有J2ME开发插件,如J2ME Polish和WTP(Web Tools Platform)。这些插件使开发者能进行项目管理、代码编辑和设备模拟。Eclipse的灵活性和可扩展性使其成为...
在J2ME游戏开发中,为了实现游戏的流畅运行和实时响应,通常需要使用多线程。游戏的主要逻辑和用户输入处理在一个线程上,而图形渲染和其他后台任务则在另一个线程中执行,这样可以确保游戏不会因为某一任务的阻塞...
2. **事件处理**:J2ME使用键事件和触摸事件(如果设备支持)来处理用户输入,这在游戏控制中至关重要。 3. **线程管理**:游戏通常需要独立于用户界面的线程来实现游戏逻辑和动画,以确保流畅性。 4. **资源管理**...