⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game.java

📁 J2ME实现得梭哈游戏联网程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
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 + -