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

📄 milionercanvas.java

📁 一个用于编写百万富翁游戏的框架
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import javax.microedition.lcdui.*;
//import javax.microedition.midlet.MIDlet;
import java.util.Timer;
import java.util.TimerTask;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import javax.microedition.io.*;
//import java.util.Random;

/**
 * This class is the display of the game.
 */
public class MilionerCanvas extends com.nokia.mid.ui.FullCanvas  {
  static String VERZIJA = "v0.2.1";

// efekti
//  public static NokiaGameEffects Efekti;
  
//                          0123456789
  static String YU_SLOVA = "帪姎奇辱叙";  

// Pitanja
	
	
//****************************************************/
// random number generator
    static java.util.Random random = new java.util.Random();	
//	Random PRand;
	
	String cPitanje = "PITANJESTART";
	String[] cOdgovori;
	String cDA = "DA";	
	String cNE = "NE";		
	int[] anPub;			
	String[] acPrijatelj;				
	int nTacan = 0;
	int nPitanje = 0;	

	int nRezMesto = -1;		
	int nTRez;		
	boolean lDoCheckRez = false;

//	private final static char[] C_CHECK = { 'a', 'c', 't', 'y', '7', 'i', '2', '9' };

	private final static char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
                            '9', 'A', 'B', 'C', 'D', 'E', 'F' };

	int nStatus, nOldStatus, nPostavljeno, nFlickerStatus;
	/* nStatus - stanja
		0 - Splash
		1 - Uputstvo
		2 - Pitanje - Nova igra
		3 - Novo pitanje
		4 - Pitanje - potvrda
		5 - Prijatelj
		6 - Publika
		7 - Odustani - potvrda
		8 - Rezultati
	*/

	Image goreImage;
	Image doleImage;
	Image dugmeImage;
	Image dugmeCImage;
	Image dugmeZImage;	
	Image p50Image;		
	Image p50xImage;			
	Image prijateljImage;		
	Image prijateljxImage;			
//	Image scprijateljImage;					
	Image pubImage;		
	Image pubxImage;			
//	Image scpubImage;				

	private final static String[] PARE_STRING = 
			{ "", "300", "600",
			  "900", "1,5k", "3k",
			  "6k", "12k", "24k",
			  "48k", "96k", "192k",
			  "375k", "750k", "1,5M", "3M", "3M" };

	boolean l50, lPrijatelj, lPub, lDaNe, lOdustani, lcOdustani;
//	boolean lDAFlicker, lNEFlicker;
	boolean[] lPitanjaC, lPitanjaZ, lPitanjaFlicker; 
	boolean lUpNOVA = false;	

	boolean lLoaded = false;		
	boolean lLoadStarted = false;			
	int nLoad = 0;
	
	// Flicker Timer
	Timer timerFlicker;
	boolean lFlickerTimerPause = true;
  	int nFlickerTimer = 0;

	// Bodovi Timer
	Timer timerBodovi;
	boolean lBodoviTimerPause = false;
  	int nBodoviTimer = 0;

	// Pomoc Timer
	Timer timerPomoc;
  	int nPomocTimer = 0;

// Pomoc prijatelja
	int nIzbPit, nPost;

// Uputstvo
	private final static String[] UPUTSTVO_STRING = { 
		"1,2,3,4 = A,B,C,D",
		"5=Uputstvo, 6=Rezultati",
		"7=50:50, 8=Prijatelj",
		"9=Publika",			
		"",			
		"broj pitanja: 1024",
		"Za nove verzije i ostalo",			
		"ww1.infosky.net/~milika"
	};

  /**
   * a handle to the display.
   */
  Display myDisplay;

  /**
   * a handle to the MIDlet object (to keep track of buttons).
   */
  Milioner myMilioner;

  /**
   * whether or not the game has ended.
   */
  static boolean myGameOver;

  /**
   * Constructor sets the data.
   */
  public MilionerCanvas(Milioner midlet) {
    super();
    myDisplay = Display.getDisplay(midlet);
    myMilioner = midlet;
	cOdgovori = new String[4];
	lPitanjaC = new boolean[4];
	lPitanjaZ = new boolean[4];	
	lPitanjaFlicker = new boolean[4];		
	for (int i = 0; i < 4; i++) { 
		cOdgovori[i] = "";
		lPitanjaC[i] = false;
		lPitanjaZ[i] = false;		
		lPitanjaFlicker[i] = false;
	 }
	l50 = false;
	lPrijatelj = false;
	lPub = false;
	lDaNe = false;
	lOdustani = false;	

	anPub = new int[4];
	acPrijatelj = new String[3];	
	for (int a = 0; a < 3; a++) { acPrijatelj[a]=""; }
		
	timerFlicker = new Timer();
	timerBodovi = new Timer();	
	timerBodovi.schedule(new TimerBodovi(), 0, 200);
	timerPomoc = new Timer();		

//	PRand = new Random();
//	PRand.setSeed(1736284);

//		Efekti = new NokiaGameEffects();
//		Efekti.resume();

	// Rezultati
	MilScore.openHighScores();
	MilScore.saveHighScore();	
	
//	MilScore.acRez[2] = "aaala";
//	MilScore.saveHighScore();
  }

  /**
   * This is called as soon as the application begins.
   */
  void start() {
  	nStatus = 0; // Splash
    myDisplay.setCurrent(this);
    nPitanje = 0;
    repaint();
  }

  /**
   * sets all variables back to their initial positions.
   */
  void reset() {
    repaint();
  }


	protected void keyPressed(int keyCode)	{
	if (lLoaded) {
		switch  (nStatus) {
			case 0: 
				nStatus++;
				nOldStatus = 2;
				cPitanje = "";				
	  			break;
	  		case 2:	// da ne pitanje
//				cPitanje = "";				  				  			
				if (keyCode == KEY_STAR || keyCode == KEY_SOFTKEY1  ) { 
					// Da
					nPitanje = 1;
					nStatus = 3;
					for (int i = 0; i < 4; i++) { 
						lPitanjaC[i] = false;
						lPitanjaZ[i] = false;		
						lPitanjaFlicker[i] = false;
					 }
					l50 = true;
					lPrijatelj = true;
					lPub = true;
					lDaNe = false;
					lOdustani = true;
				  	nBodoviTimer = 0;
					PostaviPitanje(nPitanje);				  	
				} else if (keyCode == KEY_POUND || keyCode == KEY_SOFTKEY2  ) {
					// Ne
				    myMilioner.exitMIDlet();
				}
				break;
									
	  		case 3:	// postavljanje pitanja
				for (int i = 0; i < 4; i++) { 
					lPitanjaC[i] = false;
					lPitanjaZ[i] = false;		
//					lPitanjaFlicker[i] = false;
				 }
//				l50 = true;
//				lPrijatelj = true;
//				lPub = true;
				lDaNe = false;
				lOdustani = true;

	  			switch (keyCode) {
	  				case KEY_NUM1: if (cOdgovori[0]!="") {
						lDaNe = true;
						lOdustani = false;
	  					cDA = "Kona"+YU_SLOVA.charAt(7)+"an";
	  					cNE = "Otka"+YU_SLOVA.charAt(1)+"i";
	  					nPostavljeno = 0;
	  					lPitanjaC[0] = true;
	  					nStatus = 4; 
//						Efekti.playDaNe();	  						  					
	  					}
	  					break; 
	  				case KEY_NUM2: if (cOdgovori[1]!="") {
						lDaNe = true;
						lOdustani = false;
	  					cDA = "Kona"+YU_SLOVA.charAt(7)+"an";
	  					cNE = "Otka"+YU_SLOVA.charAt(1)+"i";
	  					nPostavljeno = 1;
	  					lPitanjaC[1] = true;
	  					nStatus = 4; 
//						Efekti.playDaNe();	  						  					
	  					}
	  					break; 
	  				case KEY_NUM3: if (cOdgovori[2]!="") {
						lDaNe = true;
						lOdustani = false;
	  					cDA = "Kona"+YU_SLOVA.charAt(7)+"an";
	  					cNE = "Otka"+YU_SLOVA.charAt(1)+"i";
	  					nPostavljeno = 2;
	  					lPitanjaC[2] = true;
	  					nStatus = 4; 
//						Efekti.playDaNe();	  						  					
	  					}
	  					break; 
	  				case KEY_NUM4: if (cOdgovori[3]!="") {
						lDaNe = true;
						lOdustani = false;
	  					cDA = "Kona"+YU_SLOVA.charAt(7)+"an";
	  					cNE = "Otka"+YU_SLOVA.charAt(1)+"i";
	  					nPostavljeno = 3;
	  					lPitanjaC[3] = true;
	  					nStatus = 4; 
//						Efekti.playDaNe();	  						  					
	  					}
			
	  					break; 
					
	  				case KEY_NUM5:	// uputstvo
	  					nOldStatus = nStatus;
	  					nStatus = 1;
//						System.out.println("-"+GetBodovi() );									
	  					break;

	  				case KEY_NUM6:	// rezultati
//	  					myMilioner.getName();
//						System.out.println("-"+myMilioner.nameRet);							

//connect();
	  					nOldStatus = nStatus;
	  					nStatus = 8;
	  					break;

	  				case KEY_NUM7: if (l50) {	// 50:50
	  					l50 = false;
	  					int nT = 0;
	  					int nA = 0;	  					
	  					while (nT<2) {
	  						nA = Math.abs(random.nextInt()%4);
	  						if (nA != nTacan && cOdgovori[nA] !="") {
	  							cOdgovori[nA] = "";
	  							nT++;
	  						}
	  					} }
//						Efekti.playPomoc();					    	  					
	  					break;
	  				case KEY_NUM8: if (lPrijatelj) {	// prijatelj
						acPrijatelj[0] = "";  			
						acPrijatelj[1] = "";  			
						acPrijatelj[2] = "";  								
	  					lPrijatelj = false;	  					
	  					nOldStatus = nStatus;
	  					nStatus = 5; 
	  					nPomocTimer = 0;
						if (nPitanje < 5) {
							nIzbPit = nTacan;
					        nPost = 100;
						} else {
					        nIzbPit = nTacan;
							//{ Procenat uspeha - pomoc prijatelja }
					        nPost = 100-Math.abs(random.nextInt()%(5+(nPitanje-4)*10));
					        if (nPost < 10) { nPost = Math.abs(random.nextInt()%20)+5; }
					        if ( Math.abs(random.nextInt()%100+1) > nPost ) {
					            while (nIzbPit == nTacan || cOdgovori[nIzbPit] == "") {
					                nIzbPit = Math.abs(random.nextInt()%4);
					            }
					        }
					    }
//						Efekti.playPomoc();					    
						timerPomoc.schedule(new TimerPomoc(), 0, 1400); }
						break;
	  				case KEY_NUM9: if (lPub) {	// publika
						anPub[0] = 0;
						anPub[1] = 0;
						anPub[2] = 0;
						anPub[3] = 0;
					    if (nPitanje < 5) { anPub[nTacan] = 100-Math.abs(random.nextInt()%15); }
					    else { anPub[nTacan] = 100-(Math.abs(random.nextInt())%(20+(nPitanje-4)*10)); }

				        if (anPub[nTacan] < 0) { anPub[nTacan] = Math.abs(random.nextInt()%20+5); }


					        int nPDosad = anPub[nTacan];
				            String sIzb = Odg2Str(nTacan);
				            nIzbPit = nTacan;
							for (int nTi = 0; nTi < 3; nTi++) { 				            
				                while ( sIzb.indexOf(Odg2Str(nIzbPit)) != -1 ) {
				                    nIzbPit = Math.abs(random.nextInt()%4); }

//								System.out.println("nTi="+nTi+" - "+nIzbPit+" izabrano "+nPDosad);			
								if (nPDosad == 100) { break; }

								if (nTi == 2) { anPub[nIzbPit] = 100-nPDosad; 
//									System.out.println("kraj"+anPub[nIzbPit]);
								} else {
									if (cOdgovori[nIzbPit]=="") {
					                    if (5 > (100-nPDosad)) {
					                      anPub[nIzbPit] = Math.abs(random.nextInt()%(100-nPDosad)); 
					                    } else {
					                    	anPub[nIzbPit] = Math.abs(random.nextInt()%5); 
					                    }
					                } else {
					                	anPub[nIzbPit] = Math.abs(random.nextInt()%(100-nPDosad));
					                }
					                nPDosad += anPub[nIzbPit];
					                sIzb += Odg2Str(nIzbPit);
					            }
					        }


	  					lPub = false;	  					
	  					nOldStatus = nStatus;
	  					nStatus = 6; 
	  					nPomocTimer = 0;	  						  					
//						Efekti.playPublika();	  					
						timerPomoc.schedule(new TimerPomoc(), 0, 250);
	  					}
	  					break;

	  				case KEY_POUND: // odustani
	  				case KEY_SOFTKEY2: // odustani
						lcOdustani = true;
						lDaNe = true;
						lOdustani = false;
	  					cDA = "Odustajem";
	  					cNE = "Otka"+YU_SLOVA.charAt(1)+"i";
	  					nStatus = 7;
//						Efekti.playDaNe();	  					
	  					break; 


	  			}
				break;	  			
				
	  		case 4:	// pitanje - potvrda
				if (keyCode == KEY_STAR || keyCode == KEY_SOFTKEY1  ) { 
					// Da
					if (nPostavljeno == nTacan) { //tacan odgovor
						nPitanje++;
						if (nPitanje == 16) {
							cPitanje = "Osvojiili ste 3.000.000 dinara!!!";
							nFlickerStatus = 2;
//							nPitanje = 0;
					  		lUpNOVA = false;
							lDoCheckRez = true;					  		
						} else {
							cPitanje = "Ta"+YU_SLOVA.charAt(7)+"an odgovor!";							
							nFlickerStatus = 3;
						}

						lPitanjaC[nTacan] = false;
						lPitanjaFlicker[nTacan] = true;
						
						lDaNe = false;
						lOdustani = true;						

//						Efekti.playTacno1();					  								
												
						if (lFlickerTimerPause) {
							lLoaded = false;							
							nFlickerTimer = 0;
							lFlickerTimerPause = false;
							timerFlicker.schedule(new TimerFlicker(), 0, 300);
						}						
					} else { // netacan
						lcOdustani = false;						
						nFlickerStatus = 2;
//						nPitanje = 0;

						lPitanjaC[nPostavljeno] = true;
						lPitanjaFlicker[nTacan] = true;
						lDaNe = false;
						lOdustani = false;						
						cPitanje = "Neta"+YU_SLOVA.charAt(7)+"an odgovor!";
					  	lUpNOVA = false;

//						Efekti.playNetacno1();					  								
						lDoCheckRez = true;
						
						if (lFlickerTimerPause) {
							lLoaded = false;							
							nFlickerTimer = 0;
							lFlickerTimerPause = false;
							timerFlicker.schedule(new TimerFlicker(), 0, 300);
						}						
					}
				} else if (keyCode == KEY_POUND || keyCode == KEY_SOFTKEY2  ) {
					// Ne
					for (int i = 0; i < 4; i++) { 
						lPitanjaC[i] = false;
						lPitanjaZ[i] = false;		
						lPitanjaFlicker[i] = false;
					 }
					lDaNe = false;
					lOdustani = true;
  					nStatus = 3;
				} else if (keyCode == KEY_NUM5 ) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -