Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема в завершении простенькой игры 
:(
    Опции темы
zzkk
Дата 26.11.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



Здравствуйте. По заданию препа написал простенькую игру. Собственно выкладываю код. НО!
Хотелось бы при столкновении моего кубика и падающих получать надпись "Game over" и начальное меню типа "начать игру". Надеюсь на вашу помощь smile 

Game
Код

package ru.testtask;

import java.util.Random;
import javax.microedition.lcdui.*;


public class Game extends Canvas implements Runnable {
    int ws,hs,w,h;
    int col=8, str=9;
    int[][] matr;
    final int EMPTY=0;
    final int BRICK=1;
    final int HUMAN=2;
    int hposition=1; //номер столбца, в котором находится человечек
    int limit=1;
    int speed=300;

    public Game() {
        this.setFullScreenMode(true);
        ws=getWidth();
        hs=getHeight();
        h=hs/str; //высота кубика
        w=ws/col; //ширина кубика
        matr=new int[str][col];
        new Thread(this).start();
    }

    protected void paint(Graphics g) {
        for (int i=0; i<str; i++) {
            for (int j=0; j<col; j++) {
                switch (matr[i][j]) {
                    case EMPTY:
                           g.setColor(0xffffff);
                           break;
                    case BRICK:
                           g.setColor(0xff0000);
                           break;
                    case HUMAN:
                        g.setColor(0x0000ff);
                        break;
                }
                g.fillRect(j*w, i*h, w, h);
            }
        }
    }

    private void makeNewRow() {
        for (int i=0; i<col; i++) {
            for (int j=str-2; j>=0; j--) {
                matr[j+1][i]=matr[j][i];
            }
        }
        Random r=new Random();
         for (int i=0; i<col; i++) {
            matr[0][i]=EMPTY;
        }
        for (int i=0; i<limit; i++) {
            matr[0][Math.abs(r.nextInt()%col)]=BRICK;
        }
        matr[str-1][hposition]=HUMAN;
    }

    public void run() {
        try {
            while(true) {
                makeNewRow();
                repaint();
                Thread.sleep(speed);
            }
        } catch (Exception exc) {
            System.out.print(exc.toString());
        }
    }

    public void keyPressed(int k) {
        int gk=getGameAction(k);
        switch (gk) {
            case LEFT:
               hposition=hposition==0?hposition:hposition-1;
               break;
            case RIGHT:
               hposition=hposition==col-1?hposition:hposition+1;
               break;
        }
    }
}


И Midlet
Код

package ru.testtask;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Midlet extends MIDlet {
    public void startApp() {
        Display.getDisplay(this).setCurrent(new Game());
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

PM MAIL   Вверх
PiyodaiSiyo
Дата 3.12.2010, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



просто интересно было посмотрел твою игру. такого рода  аркадки везде используют спрайты(здесь кубики) и двигающиеся карты хотя здесь и без карт можно.там ведь все методы про столкновения и к тому же вместо твоего кэнвас используют более шустрый геймкэнвас.да и код маленький и понятный станет.Если сам написал (первый раз вижу хахастолько вычислений)то уж легче почитать,там рукой подать...
PM MAIL   Вверх
PiyodaiSiyo
Дата 3.12.2010, 04:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



а врт примерчик старенькая демка
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package myclasses;

/**
 *
 * @author Iskandar
 */
import  javax.microedition.lcdui.*;
import  java.io.IOException;

import  javax.microedition.lcdui.game.*;
public class MyGameCanvas extends GameCanvas implements Runnable{
    int[] i={1,2,3,1,2,3};
    private MySprite bol,bomba1,bomba2,bomba3,bomba4;
    private LayerManager m;

    boolean z,Bmb1Apears,Bmb2Apears,Bmb3Apears,Bmb4Apears,BolApears;
    public MyGameCanvas()throws IOException{
        super(true);

        Image im= Image.createImage("/bol.png");
        bol=new MySprite(im,23,23);
        bol.setPosition(getWidth()/2,getHeight()/2);

        Image bombaImage=Image.createImage("/bomba.png" );
        bomba1=new MySprite(bombaImage,23,23);
        bomba2=new MySprite(bombaImage,23,23);
        bomba3=new MySprite(bombaImage,23,23);
        bomba4=new MySprite(bombaImage,23,23);

        bomba1.setPosition(0,0);
        bomba2.setPosition(getWidth()-30,0);
        bomba3.setPosition(0,getHeight()-40);
        bomba4.setPosition(getWidth()-30,getHeight()-40);

        m=new LayerManager();

        m.append(bol);
        m.append(bomba1);
        m.append(bomba2);
        m.append(bomba3);
        m.append(bomba4);

    }
    synchronized public void colliding$(){

    if (bol.collidesWith(bomba1,false)&&Bmb1Apears){
        if (bomba1.getFrame()==2)
        {
            Bmb1Apears=false;
            BolApears=false;
            m.remove(bol);
            m.remove(bomba1);
            return;
        }

        bomba1.nextFrame();
        bol.nextFrame();
        
    }
    if (bol.collidesWith(bomba2,false)&&Bmb2Apears)
    {
        if (bol.getFrame()==2)
        {

            BolApears=false;
            m.remove(bol);
            return;
        }
        bomba2.setFrame(0);
        bol.nextFrame();
    }
    if (bol.collidesWith(bomba3,false)&&Bmb3Apears){
        if (bomba3.getFrame()==2)
        {
            m.remove(bomba3);
            bol.setFrame(0);
            Bmb3Apears=false;
            return;

            
        }

        bomba3.nextFrame();
        bol.setFrame(0);
    }
    if (bol.collidesWith(bomba4,false)&&Bmb4Apears)
    {

        
        bomba4.nextFrame();//setFrameSequence(i);
        m.remove(bol);
        BolApears=false;
        
    }

   }
   public void start(){
    Bmb1Apears=true;
    Bmb2Apears=true;
    Bmb3Apears=true;
    Bmb4Apears=true;
    BolApears   =true;
    z=true;
    Thread t=new Thread(this);
    t.start();

   }
   public void stop(){
    z=false;
   }
   public void run(){
    Graphics g=getGraphics();
    while(z){
        inputKey();
        colliding$();
        
        init(g);
        
        myMethod();
   
try{
            Thread.sleep(20);
        }catch( java.lang.InterruptedException e){System.out.print("!!!!!!!!interrupted");}
        
    }
    }
    private void inputKey(){
        if (!BolApears) return;
        int keyStates=getKeyStates();
        if ((keyStates & LEFT_PRESSED)!=0)bol.moveLeft();
        if ((keyStates & RIGHT_PRESSED)!=0)bol.moveRight();
        if ((keyStates & UP_PRESSED)!=0)bol.moveUp();
        if ((keyStates & DOWN_PRESSED)!=0)bol.moveDown();



    }
    private void init(Graphics g){
        g.setColor(0x00ffff00);
        g.fillRect(0,0,getWidth(),getHeight());
        m.paint(g,0,0);
        flushGraphics();


    }
/*synchronized*/ void myMethod(){
    
}

}
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package myclasses;

/**
 *
 * @author Iskandar
 *
 */
 import  javax.microedition.lcdui.*;
 import  javax.microedition.lcdui.game.*;
public class MySprite extends Sprite{
    public MySprite(Image i,int w,int h){
        super(i,w,h);
    }
    void moveLeft(){
        move(-1,0);
    }
    void moveRight(){
        move(1,0);
    }
    void moveUp(){
        move(0,-1);
    }
    void moveDown(){
        move(0,1);
    }

}

Код

package mainPac;

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
import  java.io.IOException;
import myclasses.*;

public class Midlet extends MIDlet implements CommandListener {

    private Command exitCommand; // The exit command
    private Display display;     // The display for this MIDlet
    private MyGameCanvas mr;
    public Midlet() {
        super();
        display = Display.getDisplay(this);
        exitCommand = new Command("Exit", Command.EXIT, 0);
    }

    public void startApp()  {
                 try{ mr = new MyGameCanvas();
        mr.start();

        mr.addCommand(exitCommand);
        mr.setCommandListener(this);

        display.setCurrent(mr);
        }catch(IOException e){System.out.print("tatu");}

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        if (mr!=null) mr.stop();
    }

    public void commandAction(Command c, Displayable s) {
        if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }

}



рисуни вытащи из атача
и инджой

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  ____________.rar 10,21 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.