📄 milionercanvas.java
字号:
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 + -