Oto Gra pamięciowa:
tutaj plik http://koronowicz.com/Pamiec.jar
package gra;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Random;
import java.lang.Math.*;
public class Pamiec extends MIDlet{
private Display display;
private Nawigacja canvas;
public Pamiec(){
display = Display.getDisplay(this);
canvas = new Nawigacja(this);
}
protected void startApp(){
display.setCurrent( canvas );
}
protected void pauseApp(){ }
protected void destroyApp( boolean unconditional ){
notifyDestroyed();
}
public void exitMIDlet(){
destroyApp(true);
}
} // czy inne klasy moga zawierac sie wew klasy glownej i co to powoduje?
class Nawigacja extends Canvas{ // klasa nawigujaca - menu wyboru
private Pamiec midlet;
private Display display;
private Gra canvas;
private Image image;
public Nawigacja(Pamiec midlet){
this.midlet = midlet;
// logo na poczatku
try{
image = Image.createImage("gra/logo.png");
} catch (Exception e) {
return;
}
}
protected void paint(Graphics g){
//tlo
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
//logo
g.drawImage(image, getWidth()/5, getHeight()/8, Graphics.LEFT | Graphics.TOP);
// menu gry
g.setColor(0, 0, 0);
g.drawString("[1] Rozpocznij gre", getWidth()/6, getHeight()/3, Graphics.TOP | Graphics.LEFT);
//g.drawString("[2] Instrukcja", getWidth()/6, (getHeight()/3)+20, Graphics.TOP | Graphics.LEFT);
g.drawString("[2] Wyjdz", getWidth()/6, (getHeight()/3)+20, Graphics.TOP | Graphics.LEFT);
}
protected void keyPressed(int keyCode){
if (keyCode == Canvas.KEY_NUM2) { midlet.exitMIDlet(); } // klawisz 4 - wyjscie
if (keyCode == Canvas.KEY_NUM1) { // klawisz 1 rozpoczecie gry
display = Display.getDisplay(midlet);
canvas = new Gra(midlet);
display.setCurrent(canvas);
}
//if (keyCode == Canvas.KEY_NUM2) { // klawisz 2 - intrukcja
// przejscie do klasy z intrukcja
//}
repaint();
}
}
class Gra extends Canvas { // klasa losowania obrazkow i prezentowania ich uzytkownikowi
private int ll = 0, kk = 0, dobre = 0, zle = 0;
private Image image;
private Image imgspr;
private Display display;
private Nawigacja canvas;
private Pamiec midlet;
public static final int SIZE = 10;
public int[] wylosowane = new int[10]; // tablica wylosowanych tablic
public int[] wylosowanecyf = new int[10];
public int[] wcisniete = new int[10];
int stan = 0; // stan 0 - pokazywanie obrazkow, 1 - sprawdzanie pamieci, 2 - wynik(kliknij i menu glowne
int zlicz = 0;
public Gra(Pamiec midlet){
this.midlet = midlet;
//prezentacja
Random random = new Random();
int size = 13, bu=0;
int[] array = new int[size];
for(int i = 0 ; i < size; i++) array[i] = i;
for(int i = size; i > 0; i--) {
int index = random.nextInt(i);
if (bu<10) {
wylosowane[bu] = array[index];
bu++;
}
array[index] = array[i-1];
}
for(int ii = 0 ; ii < 10; ii++){
wylosowanecyf[ii] = random.nextInt(9);
}
// wyswietlenie pierwszego obrazka
if (ll == 0) {
try{
image = Image.createImage("gra/" + Integer.toString(wylosowane[0]) + ".png");
} catch (Exception e) {
return;
}
}
//sprawdzanie
if (ll == 0) {
try{
imgspr = Image.createImage("gra/" + Integer.toString(wylosowane[0]) + ".png");
} catch (Exception e) {
return;
}
}
}
protected void keyPressed(int keyCode){
if (stan == 1) { //sprawdzanie
if (keyCode == Canvas.KEY_NUM0 || keyCode == Canvas.KEY_NUM1 || keyCode == Canvas.KEY_NUM2 || keyCode == Canvas.KEY_NUM3
|| keyCode == Canvas.KEY_NUM4 || keyCode == KEY_NUM5 || keyCode == Canvas.KEY_NUM6 || keyCode == Canvas.KEY_NUM7
|| keyCode == Canvas.KEY_NUM8 || keyCode == Canvas.KEY_NUM9) {
wcisniete[kk] = keyCode - 48;
kk++;
if (kk == 10) { stan = 2; repaint(); }
try{
imgspr = Image.createImage("gra/" + wylosowane[kk] + ".png");
} catch (Exception ioe) {
return;
}
}
}
if (stan == 0) { //prezentacja
if (keyCode == Canvas.KEY_NUM5) { // po zapamietaniu klikamy 5 aby przejsc dalej
ll++;
if (ll == 10) { stan=1; repaint(); }
try{
image = Image.createImage("gra/" + Integer.toString(wylosowane[ll]) + ".png");
} catch (Exception ioe) {
return;
}
}
}
if (stan == 2) { //wynik
//repaint();
if (keyCode == Canvas.KEY_NUM5) {
display = Display.getDisplay(midlet);
canvas = new Nawigacja(midlet);
display.setCurrent(canvas);
}
}
if (stan != 2) { repaint(); }
}
protected void paint(Graphics g){
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
if (stan == 0) { //prezentacja
g.drawImage(image, getWidth()/8, getHeight()/3, Graphics.LEFT + Graphics.TOP);
// sprawdzanie wylosowanych obrazkow
// for (int ejj = 0; ejj<10; ejj++) {
// g.setColor(0, 0, 0);
// g.drawString(Integer.toString(wylosowane[ejj]) + " - " + Integer.toString(wylosowanecyf[ejj]), getWidth()-150, getHeight()/5+(ejj*13), Graphics.TOP | Graphics.LEFT);
// }
// numer obrazka
g.setColor(0, 0, 0);
g.drawString(Integer.toString(wylosowanecyf[ll]), getWidth()-80, getHeight()/3, Graphics.TOP | Graphics.LEFT);
// obrazek do zapamietania
g.setColor(0, 0, 0);
g.drawString("[5] Nastepny slajd", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);
}
if (stan == 1) { //sprawdzanie
g.drawImage(imgspr, getWidth()/8, getHeight()/3, Graphics.LEFT + Graphics.TOP);
g.setColor(0, 0, 0);
g.drawString("[0-9] Wpisz cyfre", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);
}
if (stan == 2) { //wynik
for (int ee = 0; ee<10; ee++){
if (wcisniete[ee] == wylosowanecyf[ee]) { dobre++; } else { zle++; }
//g.setColor(0, 0, 0);
//g.drawString(Integer.toString(wcisniete[ee]) + " =? " + Integer.toString(wylosowanecyf[ee]), 10, 10+(ee*10), Graphics.TOP | Graphics.LEFT);
}
g.setColor(88, 148, 24);
g.drawString("Odp. poprawne: " + Integer.toString(dobre), 10, 60, Graphics.TOP | Graphics.LEFT);
g.setColor(228, 0, 0);
g.drawString("Odp. bledne: " + Integer.toString(zle), 10, 80, Graphics.TOP | Graphics.LEFT);
g.setColor(0, 0, 0);
g.drawString("[5] Menu glowne", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);
}
}
}
Gra na niektórych telefonach się wysypuję, a na Nokii widać tylko biały ekran. Z tego co sprawdzałem to przez wyświetlanie obrazków, nie wiem czy robie to poprawnie?