?? game.java
字號:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import java.io.DataInputStream;
import java.util.Random;
public class Game implements NetWork,Actor
{
public void setPlayerIndex(byte a)
{
}
/*************通用變量****************/
public static int TL=Graphics.LEFT|Graphics.TOP;
public static int TR=Graphics.RIGHT|Graphics.TOP;;
public static int HV=Graphics.HCENTER|Graphics.VCENTER;
public static int TV=Graphics.TOP|Graphics.HCENTER;
boolean a=true;
/***********圖片資源*************/
public Image[] ImgNum;
public Image[] ImgMode;
public Image Imggivep;
public Image[]ImgProcess;
public Image[] ImgHuase;
public Image[] ImgOver;
public Main main;
public int GameStatus=-1;
public int LoadStep=-1;
/*********游戲邏輯變量****************/
Random random=new Random();
private final int MaxUser=5;
private int[]Score=new int[MaxUser]; //分數
private int[][]UserZu=new int[MaxUser][2];
private int UserPai[][][]=new int[MaxUser][5][2]; //6個玩家,3張牌,0花色1點數
private boolean[] BflushUser=new boolean[MaxUser];
private boolean BdrawPai[]=new boolean[MaxUser]; //控制各個位置得用戶得牌得繪制
private boolean BhadUser[]=new boolean[MaxUser];
private boolean BGameComing[]=new boolean[MaxUser];
private boolean BInGame[]=new boolean[MaxUser]; //用于判斷在游戲的用戶,與按鈕有關
private boolean BGameing[]=new boolean[MaxUser]; //用于判斷當前還在進行游戲(未失敗得)
private boolean BlookPai[]=new boolean[MaxUser]; //是否看牌了
private int AddZhuInfor[]=new int[MaxUser]; //繪制用戶得下注信息
private boolean BDrawInfor[]=new boolean [MaxUser];
private int CheckResult[]=new int[MaxUser];//
private int CardType[]=new int[MaxUser];
private boolean BdrawReady[]=new boolean[MaxUser]; //繪制用戶準備得 通知
private int drawUser[]=new int[MaxUser]; //繪制用戶準備得 通知
public int CurrentUser=-1;//當前激活玩家
public int LastUser=-1; //上個激活玩家
public int NextUser=-1; //下個玩家位置
public int Banker=-1;
public int HignZhu=0;
public int[] CurrentHignZhu=new int[MaxUser];
public int XiJin=0;
public int AnimationFlag=-1;//游戲動畫結束標記
public int []Menu=new int[4];//游戲菜單得按鈕
public int []AddMenu=new int[4];
public int []SelectPsition=new int[4];
public int MenuType=-1;
public int MenuIndex=0;
public boolean BLook=false;
public boolean BShowMenu=false;
public boolean BflushMenu=false;
public int ActiveTimes=0;
public boolean CanFollow=false;
public boolean CanOpen=false;
public boolean BToHall=false;
public int CountTime=15; //操作時間
public int CompareTime=-1;
public int Comparer=-1;
public int Compared=-1;
public int CompareWin=-1;
public int Operation[]=new int[MaxUser];
public int PaiType[]=new int[MaxUser];
public int OperationTime[]=new int[MaxUser];
public long BaseCountTime=0;
public long CompareBaseTime=0;
public int GotoPlay=-1; //狀態切換時間控制;
public int GotoShowResult=-1;//顯示勝負
public int GotoResult=-1;//顯示結算畫面
public int BaseChange=10;//游戲循環得基數
public int OverLoop=0;
public int BeginLoop=0;
private int OverMode=-1;
//public static int[] InitQizi={2,4,1,1,9,3,3,2,2,8,3,2,10,10,7,3,11,5,6,6,3,4,5,4,3,4,11,5,12,11};
/******分數和等級關系*********/
public static int[] LevelScore={100,200,300,500,1000,2000,4000,70000,11000,16000,22000,30000,45000,70000,
100000,150000,250000,500000,1000000};
public static String[]LevelName={"乞丐","流浪者","包身工","短工","長工","佃戶","貧農",
"下農","中農","富農","財主","地主","保長","鄉長","鎮長","er知縣","知府","總督","巡撫"};
public boolean Bkey[]=new boolean[6];
public int keyleft=0;
public int keyright=1;
public int keyup=2;
public int keydown=3;
public int keyfire=4;
public int key7=5;
public int s_player_chair_idx=-1;//本地位置標志
public Graphics g;
Commu _Commu;
/**********圖象繪制變量***********/
public boolean BinitUi=true;
public long BaseBackTime=0;
public int BackTime=-1;
public int OverSelect=0;
public boolean BInitOver=false;
public Player[] GamePlayer=new Player[MaxUser];
public byte actionType=0;
private Hall Localhall=null;
public Game()
{
}
public Game( Hall hall,Graphics ggame, Commu c)
{
Localhall=hall;
g=ggame;
_Commu=c;
InitClip(g);
GameStatus=GameDef.LoadStatus;
LoadImg(GameDef.LoadImg_Init);
}
/*從置變量*/
public void resetGame()
{
InitMove();
ActiveTimes=0;
CompareTime=-1;
BinitUi=true;
CurrentUser=-1;
LastUser=-1;
BackTime=-1;
GotoPlay=-1;
bKaiPai=0;
bhadSuoha=0;
bSuohaed=0;
canFollow=0;
canAdd=0;
canPass=0;
canSuoha=0;
GotoResult=-1;
Banker=-1;
BetMoney=0;
GameStatus=GameDef.LoadStatus;
CleanPai();
for(int i=0;i<MaxUser;i++)
{
CheckResult[i]=0;
BInGame[i]=false;
BGameing[i]=false;
CurrentHignZhu[i]=0;
UserZu[i][0]=0;
UserZu[i][1]=0;
BlookPai[i]=false;
Operation[i]=0;
PaiType[i]=-1;
Score[i]=0;
if(BhadUser[i])
{
if(GamePlayer[i].playerIsReady())
{
BdrawReady[i]=true;
}
drawUser[i]=1;
}
}
}
/*放棄游戲資源*/
public void releaseGame()
{
ImgMode=null;
ImgHuase=null;
ImgOver=null;
for(int i=0;i<MaxUser;i++)
GamePlayer[i]=null;
ImgProcess=null;
}
/********激活一個玩家********/
void ActiveUser()
{
if(NextUser>=0)
{
LastUser=CurrentUser;
LastUser=3;
CurrentUser=NextUser;
NextUser=-1;
ActiveTimes+=1;
if(CurrentUser==0)
{
if(GotoResult>0)
{
return;
}
InitMenu(GameDef.NormalMenu);
//BShowMenu=true;
}
else
{
BflushMenu=true;
if(BShowMenu)
BShowMenu=false;
CanFollow=false;
}
InitCountTime();
}
}
/*****處理用戶從游戲逃跑*******/
/*void LeaveOneUser(int i)
{
BflushUser[i]=true;
BhadUser[i]=false;
BInGame[i]=false;
BGameing[i]=false;
GamePlayer[i].playerSetReady(false);
}*/
/*一個玩家失敗*/
void LoseOneUser(int i)
{
BGameing[i]=false;
}
// private int[]EndScore=new int[MaxUser];
private int lastBetUser=-1;
private int canAdd=0;
private int canFollow=0;
private int canPass=0;
private int canGiveup=0;
private int canSuoha=0;
private int bhadSuoha=0;
//private int[] ButArr=new int[4];
private int showAddCoin=-1;
private final int SignAdd=1;
private final int SignPass=2;
private final int SignGiveup=3;
private final int SignFollow=4;
private final int SignOpen=5;
private int Mcell=1;
private int HignCanAdd;
private int bKaiPai=0;
private int BetMoney=0;
private int Addmoney=0;
private int FlashTime=0;
public void FlushAddCoin(Graphics g)
{
g.setClip(GameDef.ButX,GameDef.ButY,GameDef.Butdis*4,28);
DrawBack(g);
}
private void DrawAddCoin(Graphics g)
{
if(showAddCoin<=0)
return;
if(BShowMenu)
{
BflushMenu=true;
BShowMenu=false;
}
FlashTime+=1;
if(FlashTime>=15)
FlashTime=0;
for(int i=0;i<AddMenu.length;i++)
{
if(AddMenu[i]>0)
{
if(MenuIndex==i)
{
if(FlashTime<=10)
g.drawRegion(ImgMode[GameDef.Imghmenu],0,0,62,29,0,GameDef.ButX+i*GameDef.Butdis-GameDef.Menuw/2,
GameDef.ButY-GameDef.Menuh/4,0);
else
g.drawRegion(ImgMode[GameDef.Imghmenu],62,0,62,29,0,GameDef.ButX+i*GameDef.Butdis-GameDef.Menuw/2,
GameDef.ButY-GameDef.Menuh/4,0);
}
else
g.drawRegion(ImgMode[GameDef.Imghmenu],62,0,62,29,0,GameDef.ButX+i*GameDef.Butdis-GameDef.Menuw/2,
GameDef.ButY-GameDef.Menuh/4,0);
g.setColor(0x000000);
if(AddMenu[i]!=8)
g.drawString("X"+AddMenu[i],GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-4,TV);
else
g.drawString("取消",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-4,TV);
/*switch(AddMenu[i])
{
case 1:
g.drawString("X1",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-4,TV);
break;
case 2:
g.drawString("X2",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-4,TV);
break;
case 5:
g.drawString("X5",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-4,TV);
break;
case 8:
g.drawString("取消",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-4,TV);
break;
}*/
}
}
}
/*初始化菜單*/
public void InitMenu(int type)
{
if(BShowMenu)
BflushMenu=true;
BShowMenu=true;
for(int i=0;i<Menu.length;i++)
{
Menu[i]=0;
AddMenu[i]=0;
}
int index=0;
MenuIndex=0;
if(bKaiPai>0)
{
Menu[index++]=SignOpen;
Menu[index++]=SignGiveup;
return;
}
if(canAdd>0)
{
Menu[index++]=SignAdd;
}
if(canFollow>0)
{
Menu[index++]=SignFollow;
}
if(canPass>0)
{
Menu[index++]=SignPass;
}
if(canGiveup>0)
{
Menu[index++]=SignGiveup;
}
//System.out.println("初始化菜單完成");
}
void initAdd()
{
for(int i=0;i<4;i++)
{
AddMenu[i]=0;
}
int a=0;
int b=0;
if(HignCanAdd>0)
{
if(HignCanAdd>=5*Mcell)
{
addMenu(1);
addMenu(2);
addMenu(5);
addMenu(8);
}
else if(HignCanAdd>2*Mcell)
{
addMenu(1);
addMenu(2);
addMenu(HignCanAdd/Mcell);
addMenu(8);
}
else if(HignCanAdd==2*Mcell)
{
addMenu(1);
addMenu(2);
addMenu(8);
}
else
{
addMenu(1);
//addMenu(HignCanAdd/Mcell);
addMenu(8);
}
}
}
void addMenu(int value)
{
for(int i=0;i<AddMenu.length;i++)
{
if(AddMenu[i]==0)
{
AddMenu[i]=value;
break;
}
}
}
private int bSuohaed=0;
private void UpdateCoin(int position,int coin)
{
System.out.println("coi n"+coin);
try{
GamePlayer[position].Gold+=coin;
if(GamePlayer[position].Gold<0)
GamePlayer[position].Gold=0;
if(Def.bDgg) System.out.println("金幣position"+position+"金幣"+GamePlayer[position].Gold);
if(position==0)
{
Hall.s_player.Gold+=coin;
if(Hall.s_player.Gold<0)
Hall.s_player.Gold=0;
}
}catch(Exception e)
{
if(Def.bDgg) System.out.println("更新游戲總金幣出錯"+e.getMessage());
}
}
/******增加用戶注***********/
void AddUserZhu(int position ,int zhu)
{
if(position>=0||position<MaxUser)
{
int add=zhu-CurrentHignZhu[position];
if(BlookPai[position])
{
AddZhuInfor[position]=add*2;
}
else
{
//AddZhuInfor[position]=add/Mcell;
int a=zhu/Mcell;
if(a>10)
a=13;
AddZhuInfor[position]=a;
}
CurrentHignZhu[position]=zhu;
UserZu[position][0]+=zhu;
UserZu[position][1]-=zhu;
if(UserZu[position][1]<=0)
UserZu[position][1]=0;
BDrawInfor[position]=true;
}
}
/*核對用戶得注*/
void CheckZhu(int position,int max,int loop)
{
// System.out.println("~~~~~~~~~~~~~~~~check zhu "+position+"max"+max+"loop"+loop);
UserZu[position][0]=loop;
UserZu[position][1]=max;
BDrawInfor[position]=true;
}
/*根據分數獲得等級**/
public static String getRating(int score)
{
// TODO 自動生成方法存根
String rating = new String("沒有等級");
for(int a=0;a<LevelScore.length;a++)
if(score <LevelScore[a] )
{
return LevelName[a];
}
return rating;
}
int MovePai[][][]=new int[MaxUser][2][2];
int MoveTile[]=new int[MaxUser];
int MoveUser=0;
int BeginUser=0;
int MoveIndex=0;
int MovePaiN=0;
boolean BdrawMoveCard[]=new boolean[MaxUser];
void InitMove()
{
for(int position=0;position<MaxUser;position++)
for(int i=0;i<2;i++)
{
//if(MovePai[position][i][0]==-1)
{
MovePai[position][i][0]=-1;
MovePai[position][i][1]=-1;
//break;
}
}
}
void AddMovePai(int position,int huase ,int dian)
{
for(int i=0;i<2;i++)
{
if(MovePai[position][i][0]==-1)
{
MovePai[position][i][0]=huase;
MovePai[position][i][1]=dian;
break;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -