package MainView;
import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.game.Sprite;
public class MyCanvas extends Canvas implements Runnable{
private Image image=null;
private myImage is[][]=new myImage[3][3];
private myImage back[][]=new myImage[3][3];
private int time;
public boolean run;
private int bxnull,bynull;
/*抽取出来的一张*/
private myImage Nimage=null;
/*哪个是空位*/
private int null_x=2;
private int null_y=2;
private boolean game_key=false;
private boolean finish = false;
private boolean inmiji = false;
private Display d=null;
private List l=null;
public MyCanvas(Display d, List l) {
super();
this.d = d;
this.l = l;
this.setFullScreenMode(true);
new Thread(this).start();
}
protected void paint(Graphics g) {
/*刷新*/
//System.out.println("pppppppppppp");
g.setColor(255, 255, 255);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
/*显示所有图片*/
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(is[i][j]!=null)
g.drawImage(is[i][j].getImage(), is[i][j].getX()+10, is[i][j].getY()+10, 0);
else{
g.fillRect(null_x*75+10, null_y*75+10, 75, 75);
}
}
}
g.setColor(0, 0, 0);
g.drawString("返回菜单", this.getWidth(), this.getHeight(), Graphics.RIGHT
| Graphics.BOTTOM);
g.drawString("秘籍", 0, this.getHeight(), Graphics.LEFT
| Graphics.BOTTOM);
/*正确界面正确*/
if(game_key){
g.drawImage(image, 5, 5, 0);
g.setColor(255, 0, 0);
g.drawString("恭喜你过关了", 10, 100, 0);
}
if(inmiji){
g.setColor(255, 0, 0);
g.drawString("按任意键返回", 10, 100, 0);
}
;;;;;
g.setColor(255, 0, 0);
g.drawString("你已经用了"+time+"秒", 10, 10, 0);
g.drawString("按#110查看秘籍", 10, 280, 0);
}
/*添加图片*/
public void addImage(String p_name){
try {
System.out.println(p_name+".gif");
image=Image.createImage(p_name+".gif");
} catch (IOException e) {
System.out.println("加载图片出错");
e.printStackTrace();
}
}
/*拆分图片,把图片分成8部分*/
public void allimages(){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
is[i][j]=new myImage(Image.createImage(image, i*70, j*70, 70, 70, Sprite.TRANS_NONE),
i*75, j*75);
back[i][j]=new myImage(Image.createImage(image, i*70, j*70, 70, 70, Sprite.TRANS_NONE),
i*75, j*75);
}
}
Nimage=is[2][2];
is[2][2]=null;
}
/*初始化游戏,打乱图片*/
public void Rimages(){
/*定义一个缓冲图片组*/
myImage is_temp[][]=new myImage[3][3];
/*产生随机位置*/
Random rdm=new Random();
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
while(true){
int x=rdm.nextInt(3);
int y=rdm.nextInt(3);
/*第九个位置为空*/
if(i==2&&j==2)
break;
if(x==2&&y==2)
continue;
if(is_temp[x][y]==null){
is_temp[x][y]=is[i][j];
is_temp[x][y].setX(x*75);
is_temp[x][y].setY(y*75);
break;
}
}
}
}
is=is_temp;
}
private String miji="";
private String miji_temp="";
protected void keyPressed(int keyCode) {
System.out.println(keyCode);
/*启动计时*/
this.run=true;
if(inmiji){
MiJi(1);
this.repaint();
return;
}
if(keyCode==-2);
/*完成或者*键返回菜单*/
if(keyCode==-7||finish){
try {
System.out.println("*");
Thread.sleep(0);
this.run=false;
d.setCurrent(l);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/*如果正确拼成*/
if(game_key)
finish=true;
/*************************上下左右移动***************************/
if(keyCode==-1){
Move_UP();
}else if(keyCode==-2){
Move_DOWN();
}else if(keyCode==-3){
Move_LEFT();
}else if(keyCode==-4){
Move_RIGHT();
/*****************************************************************/
}
else if(keyCode==-6){
MiJi(0);
}
/*如果按了其他键*/
else{
miji=miji+keyCode;
/*按下110求救*/
miji_temp=""+Canvas.KEY_NUM1+KEY_NUM1+KEY_NUM0;
if(miji_temp.equals(miji)){
System.out.println("110");
MiJi(0);
}
/*#号键清空秘籍*/
if(keyCode==Canvas.KEY_POUND){
miji="";
}
}
/*没点击一次检测一次是否正确如果正确则返回*/
if(CheckAll()){
is[2][2]=Nimage;
this.game_key=true;
this.run=false;
Rms rms = new Rms();
rms.openRecordStore();
try {
rms.Setrecord(Integer.toString(time), 1);
} catch (IOException e) {
e.printStackTrace();
}
rms.closeRecordStore();
}
/*重绘*/
this.repaint();
}
private void Move_UP(){
if(null_y!=2){
is[null_x][null_y]=is[null_x][null_y+1];
is[null_x][null_y+1]=null;
is[null_x][null_y].setY(null_y*75);
null_y=null_y+1;
}
}
private void Move_DOWN(){
if(null_y!=0){
is[null_x][null_y]=is[null_x][null_y-1];
is[null_x][null_y-1]=null;
is[null_x][null_y].setY(null_y*75);
null_y=null_y-1;
}
}
private void Move_LEFT(){
if(null_x!=2){
is[null_x][null_y]=is[null_x+1][null_y];
is[null_x+1][null_y]=null;
is[null_x][null_y].setX(null_x*75);
null_x=null_x+1;
}
}
private void Move_RIGHT(){
if(null_x!=0){
is[null_x][null_y]=is[null_x-1][null_y];
is[null_x-1][null_y]=null;
is[null_x][null_y].setX(null_x*75);
null_x=null_x-1;
}
}
/**复制数组*/
static public int[] copy(int[] rSource) {
int[] aResult = new int[rSource.length];
System.arraycopy(rSource, 0, aResult, 0, aResult.length);
return aResult;
}
/**
* @秘籍*/
private void MiJi(int type){
if(type==0){
inmiji=true;
/*备份*/
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
back[i][j]=is[i][j];
if(is[i][j]!=null)
System.out.print("now--"+is[i][j].getX()+is[i][j].getY());
}
}
bxnull=null_x;
bynull=null_y;
myImage is_temp[][]=new myImage[3][3];
is[null_x][null_y]=Nimage;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
is_temp[is[i][j].getOld_x()/70][is[i][j].getOld_y()/70]=new myImage(is[i][j].getImage(), 0, 0);
is_temp[is[i][j].getOld_x()/70][is[i][j].getOld_y()/70].setX(is[i][j].getOld_x());
is_temp[is[i][j].getOld_x()/70][is[i][j].getOld_y()/70].setY(is[i][j].getOld_y());
}
}
is=is_temp;
}
else {
inmiji=false;
is = back;
null_x=bxnull;
null_y=bynull;
is[null_x][null_y]=null;
System.out.println("back"+null_x+"--"+null_y);
game_key=false;
finish=false;
this.repaint();
}
}
/**
*
* @检测是否正确*/
private boolean CheckAll(){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(is[i][j]!=null&&!is[i][j].check()){
return false;
}
}
}
return true;
}
public void run() {
while(true){
while(run){
time++;
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
WTK_pt.rar_J2ME 拼图游戏_拼图 j2me
版权申诉
38 浏览量
2022-09-24
03:12:32
上传
评论
收藏 585KB RAR 举报
weixin_42651887
- 粉丝: 76
- 资源: 1万+
最新资源
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
- 毕业设计,基于PyQt5实现的可视化界面的Python车牌自动识别系统源码
- 26-朴素贝叶斯分类.rar
- 没有安Matlab 也可以 生成FIR抽头系数工具.py
- python烟花代码.rar
- 实验目的: 1.构建基于verilog语言的组合逻辑电路和时序逻辑电路; 2.掌握verilog语言的电路设计技巧 3.完成如
- 扩展卡尔曼滤波matlab仿真
- 3_base.apk.1
- 躺赢者PRO飞控常见典型问题合集(续一)无名小哥 余义 20240501待修
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈