📄 mycanvas.java
字号:
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class myCanvas extends Canvas implements Runnable
{
/***********************************************************************************
* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
***************************** 定义所有常量,变量,数组 ***************************
* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ merryHomestead @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
***********************************************************************************
*/
private final int WAITETIME=50;//休眠时间
private final int GAME_W=getWidth(),GAME_H=getHeight();//游戏屏幕宽高
private boolean UP,DOWN,LEFT,RIGHT,FIRE;///检测连续按键
private boolean talk_a;//判断是否对话
private long st,et;//用于获得系统时间
private int score;//游戏得分
private int r_Arrow;// 随机箭头方向
private int wait_time;//游戏等待时间
private int scoreTemp;//按键按下时,记录当前分数的临时变量,用作判断按键松开时,分数是否增加
private int Fire_x;/////火闪动的频率 幸运小屋 NPC随机的说话内容
private int speed;//幸运转盘速度 狮子上跳速度
private int origin;/////幸运转盘每块颜色的起始角度 马戏团地图绘制点
private short talk_i;//对话时该说的内容 -1
private short site;////////火圈移动的位置 幸运小屋选筐的位置
private short y_lion;////////马戏团狮子跳跃的高度
private byte canvasIndex=2;//切屏幕控制
private byte UP1,DOWN1,LEFT1,RIGHT1;//控制按键响应时间
private byte sound;//控制所有音乐,音效的开关
private byte space;//生箭头的频率
private byte place_Arrow[]={0,0,0,0};//四个绿色箭头x方向偏移
private byte Dancer_number;//跳舞MM图片编号
private byte Change_Image;//图片翻转,0表示不翻转
private byte Cursor;//主菜单光标
private byte fettle_lion;//马戏团狮子的状态
private byte pt;///////pt控制文字闪动,马戏团狮子的动画指针
Random r=new Random();//获得随机数的一个对象r
String talk[];///////////////////////保存所有对话内容的数组
private int ArrowTemp[]={0,0,0,0};//按键按错时,红圆的显示时间
private int ps[]={0,0,0,0,0};///////狮子动画序列
private int array_Arrow[][]=new int[20][5];//是否存在,坐标x,y,方向,下落速度
private final int array_lion[][]={/////////////保存狮子图片信息的数组
{0,0,61,25,-30,-25},
{61,0,59,25,-30,-25},
{120,0,62,25,-31,-25},
{182,0,68,25,-34,-25}
};
Image Logo1=null;//Logo图片1
Image Logo2=null;//Logo图片2
Image Logo3=null;//Logo图片3
Image Logo_text=null;//Logo文字图片
Image Text_1=null;//游戏介绍文字图片
Image Title=null;//npc图片
Image Npc=null;//npc图片
Image Dancer=null;//跳舞MM图片
Image Arrow=null;//跳舞箭头图片
Image Text=null;//游戏文字
Image Text1=null;//菜单文字
Image map11=null;//跳舞场背景
Image map=null;//游戏主地图
Image map01=null;//主地图发光建筑
Image Npc1=null;//主地图发光NPC
Image map21=null;//马戏团主地图
Image Lion=null;//马戏团动物
Image Fire01=null;//马戏团火盆/火圈
Image Pet=null;//宠物店宠物
Player player001;//主界面播放器
Player player002;//按键音播放器
Player player100;//跳舞场播放器
Player player200;//马戏团播放器
Player player300;//幸运小屋播放器
Player player301;//幸运小屋提示音播放器
myMID mid;//获得myMID类的一个对象mid
public myCanvas(myMID m)//构造函数初始化所有图片,音乐,数组
{
mid=m;
try {
array_Arrow[19][0]=15;//第一个绿色箭头x方向偏移
array_Arrow[19][1]=60;//第二个绿色箭头x方向偏移
array_Arrow[19][2]=105;//第三个绿色箭头x方向偏移
array_Arrow[19][3]=150;//第四个绿色箭头x方向偏移
talk=new String []//玩家与NPC对话数组
{
"你好!我是舞贝拉,是这",
"里的舞蹈教练,有什",
"么可以帮到你的么?",
"你好 ! 我是小美,进",
"这个练舞场需要什",
"么条件呢?",
"进我们这个练舞需要",
"10个金币,交了金币,",
"你就可以随便玩了!",
"哦 ! 好的 ! 这是10",
"个金币,可以让",
"我进去了吧? ",
"当然可以 ! 如果你想了",
"解本游戏的说明,可以",
"按“0”键查看。",
"哦 ! 好的 !",
"谢谢了 ! ",
" ",
"不用谢 ! 祝你玩",
"得高兴 ! ",
" ",
" ",
" ",
" ",
"欢迎你来到《幸运",
"小屋》!有兴趣",
"试试运气吗?",
"好呀!那你说",
"说你这个怎么",
"玩吧?",
"玩这个游戏很简",
"单,有筹码就",
"行! ",
"啊!我现在没",
"有筹码,就不",
"能玩了吗?",
"你可以用1个金币",
"换取1000个筹码!",
"10个筹码玩一次!",
"具体怎么操",
"作呢?",
" ",
"如果你想了解详",
"细操作,请按",
"“0”键!",
"哦!好的,我",
"知道了!开始",
"吧!",
"那好!希望我的",
"八彩转盘能给",
"你带来好运!",
" ",
" ",
" ",
"小美,我们马戏",
"团又增添了新项",
"目有兴趣玩吗?",
"什么新项目?",
" ",
" ",
"你可以选一个动",
"物和其他人的",
"动物比赛! ",
"比赛?赢了有",
"奖励么? ",
" ",
"当然有!赢了奖",
"励金币!",
" ",
"比赛的具体规",
"则呢?",
" ",
"具体规则你可以",
"按“0”键查看本",
"马戏团的海报!",
"OK!了解了!",
" ",
" ",
"那好!比赛",
" 开始!",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"咦!店里怎么",
"没人呢?",
" ",
"有什么事吗?",
"姐姐!",
" ",
"你爸爸呢?我",
"想买宠物!",
" ",
"哦!不好意思!",
"我爸爸出去",
"了!",
"啊!又出去了!",
"那我明天再",
"来买吧!",
" ",
" ",
" ",
"恭喜你!中奖了!",
"运气真好!中奖了!",
"运气不错!继续!",
"你运气太好了!",
"加油!大奖等着你!",
"真可惜!没能选中!",
"希望你下次能中!",
"努力!相信你能中!",
"上帝会保佑你的!",
"再接再厉吧!",
"可惜!可惜!没中!",
"加油吧!会成功的!",
};
Logo2=Image.createImage("/logo2.png");//导入LOGO图片 Text_1.png
Logo_text=Image.createImage("/logo_text.png");//导入LOGO文字图片
Text_1=Image.createImage("/text_1.png");//导入游戏介绍文字图片
Title=Image.createImage("/title.png");//导入游戏标题图片
Npc=Image.createImage("/people.png");//导入npc图片
Dancer=Image.createImage("/Dancer0.png");//导入MM图片
Arrow=Image.createImage("/Arrow0.png");//导入箭头图片
Text=Image.createImage("/text.png");//导入游戏文字图片
Text1=Image.createImage("/text0.png");//导入游戏文字图片
map11=Image.createImage("/map11.png");//导入跳舞场背景图片
map=Image.createImage("/map.png");//导入游戏主地图
map01=Image.createImage("/map01.png");//导入主地图发光建筑
map21=Image.createImage("/map21.png");//导入马戏团主地图
Npc1=Image.createImage("/npc.png");//导入npc图片
Lion=Image.createImage("/lion.png");//导入马戏团狮子图片
Fire01=Image.createImage("/fire01.png");//导入马戏团火盆/火圈图片
Pet=Image.createImage("/pet.png");//导入宠物店宠物图片
} catch (IOException e) {
e.printStackTrace();
}
initMusic();//调用音频资源,并初始化
(new Thread(this)).start();//线程启动
// st_game=System.currentTimeMillis();
}
/////////////////////////导入并所有音频资源,在构造函数中调用并初始化 music.wav 001.mid
void initMusic()
{
try {////////导入主界面背景音乐
InputStream is=getClass().getResourceAsStream("/001.mid");
player001=Manager.createPlayer(is,"audio/midi");///////////确认背景音乐格式
player001.setLoopCount(-1);////////设置音乐播放次数 -1表示无限循环
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
try {////////导入按键音乐
InputStream is=getClass().getResourceAsStream("/002.wav");
player002=Manager.createPlayer(is,"audio/x-wav");///////////确认背景音乐格式
player002.setLoopCount(1);////////设置音乐播放次数
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
try {////////导入舞蹈背景音乐
InputStream is=getClass().getResourceAsStream("/100.mid");
player100=Manager.createPlayer(is,"audio/midi");///////////确认背景音乐格式
player100.setLoopCount(-1);////////设置音乐播放次数 -1表示无限循环
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
try {////////导入马戏团背景音乐
InputStream is=getClass().getResourceAsStream("/200.mid");
player200=Manager.createPlayer(is,"audio/midi");///////////确认背景音乐格式
player200.setLoopCount(-1);////////设置音乐播放次数 -1表示无限循环
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
try {////////导入幸运小屋背景音乐
InputStream is=getClass().getResourceAsStream("/300.mid");
player300=Manager.createPlayer(is,"audio/midi");///////////确认背景音乐格式
player300.setLoopCount(-1);////////设置音乐播放次数 -1表示无限循环
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
try {////////导入幸运小屋提示音乐
InputStream is=getClass().getResourceAsStream("/301.mid");
player301=Manager.createPlayer(is,"audio/midi");///////////确认背景音乐格式
player301.setLoopCount(1);////////设置音乐播放次数
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
}
/***********************************************************************************
* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
******************************** 所有的绘制 *************************************
* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
************************************************************************************
*/
////////////////////////////系统生成的总绘制方法
protected void paint(Graphics g)
{
// g.setColor(0xffffff);//获得白色
// g.fillRect(0,0,this.getWidth(),this.getHeight());//清理全屏
switch(canvasIndex)//每个屏幕绘制不同内容
{
case 0://///////////屏幕切换时初始数据的等待界面
g.setColor(0x000000);
g.fillRect(0,0,GAME_W,GAME_H);//清理全屏
g.setColor(0xb4f654);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_LARGE));
g.drawString("游戏资源正在载入……",30,30,0);
g.fillRoundRect(20,50,wait_time,8,10,10);
g.drawString((100*wait_time/(GAME_W/2+GAME_W/4))+"%",GAME_W/2-20,60,0);
// g.drawString(" "+pt,GAME_W/2-20,90,0);
switch(Cursor)
{
case 0://////////////////////初始化****舞蹈室****数据,资源
talk_a=false;
talk_i=-1;
score=0;
space=0;
r_Arrow=0;
for(int i=0;i<array_Arrow.length-1;i++)
{
for(int j=0;j<array_Arrow[0].length;j++)
{
array_Arrow[i][j]=0;
}
}
if(pt>12)
{
wait_time=0;
canvasIndex=14;
}
break;
case 1://////////////////////初始化****马戏团****数据,资源
talk_a=false;
talk_i=17;
speed=0;
origin=0;
site=0;
score=0;
fettle_lion=0;
r_Arrow=100;
if(pt>10)
{
canvasIndex=12;
pt=0;
wait_time=0;
}
break;
case 2://////////////////////初始化****幸运小屋****数据,资源
talk_a=false;
origin=0;
score=1000;
talk_i=7;
speed=0;
site=0;
Fire_x=0;
if(pt>12)
canvasIndex=13;
break;
case 3://////////////////////初始化****宠物店****数据,资源
talk_a=false;
talk_i=28;
score=0;
if(pt>12)
{
canvasIndex=20;
wait_time=0;
}
break;
case 4://////////////////////还原****马戏团****从新开始的游戏界面的所有数据
talk_a=false;
talk_i=27;
// wait_time=0;
speed=0;
origin=0;
site=0;
score=0;
fettle_lion=0;
y_lion=0;
r_Arrow=100;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -