package gra;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Random;
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 ioe) {
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("[3] Wyjdz", getWidth()/6, (getHeight()/3)+40, Graphics.TOP | Graphics.LEFT);
}
protected void keyPressed(int keyCode){
if (keyCode == Canvas.KEY_NUM3) { 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 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
// losowanie obrazkow
Random number = new Random();
int f, e, los = 1;
for (int ej = 0; ej<10; ej++) {
f = number.nextInt(12);
e = number.nextInt(9);
// sprawdzanie powtorzen
wylosowane[ej] = f;
wylosowanecyf[ej] = e;
/*
for (int fj = 0; fj<10; fj++) {
if (wylosowane[fj] == f) {
los = 0;
}
if (los > 0) {
wylosowane[ej] = f;
} else {
ej=ej-1;
}
}
*/
}
// wyswietlenie pierwszego obrazka
if (ll == 0) {
try{
image = Image.createImage("gra/" + Integer.toString(wylosowane[0]) + ".png");
} catch (Exception ioe) {
return;
}
}
//sprawdzanie
if (ll == 0) {
try{
imgspr = Image.createImage("gra/" + Integer.toString(wylosowane[0]) + ".png");
} catch (Exception ioe) {
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) {
if (kk < 10) {
wcisniete[kk] = keyCode - 48;
kk = kk + 1;
try{
imgspr = Image.createImage("gra/" + wylosowane[kk] + ".png"); // Integer.toString(ll)
} catch (Exception ioe) {
return;
}
} else { repaint(); stan = 2; }
}
}
if (stan == 0) { //prezentacja
if (keyCode == Canvas.KEY_NUM5) { // po zapamietaniu klikamy 5 aby przejsc dalej
ll = ll + 1;
if (ll == 10) { stan=1; repaint(); }
try{
image = Image.createImage("gra/" + Integer.toString(wylosowane[ll]) + ".png"); // Integer.toString(ll)
} catch (Exception ioe) {
return;
}
}
}
if (stan == 2) { //wynik
if (keyCode == Canvas.KEY_NUM5) {
display = Display.getDisplay(midlet);
canvas = new Nawigacja(midlet);
display.setCurrent(canvas);
}
}
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("Wpisz odpowiedni numer", 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("Odpowiedzi poprawne: " + Integer.toString(dobre), 60, 60, Graphics.TOP | Graphics.LEFT);
g.setColor(228, 0, 0);
g.drawString("Odpowiedzi bledne: " + Integer.toString(zle), 60, 80, Graphics.TOP | Graphics.LEFT);
g.setColor(0, 0, 0);
g.drawString("[5] Menu glowne", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);
}
}
}
oto kod po wielu modyfikacjach
sprawe zdiagnozowalem, w momencie kiedy nie ma wyswietlanych zadnych obrazkow to tekst jest wyswietlany (NA NOKII) jak sa obrazki to nic sie nie wyswietla, lapie caly czas tylko biale tlo