Показать сообщение отдельно
  #1 (permalink)  
Старый 26.11.2010, 14:39
Новичок на форуме
Отправить личное сообщение для ZZKK Посмотреть профиль Найти все сообщения от ZZKK
 
Регистрация: 26.11.2010
Сообщений: 4

Завтра экзамен. Помогите дополнить код игры.
Здравствуйте. Как видно из темы срок критичен)))
Собственно выкладываю код. Хотелось бы при столкновении моего кубика и падающих получать надпись "Game over" и начальное меню типа "начать игру". Надеюсь на вашу помощь
package ru.testtask;

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

/**
 *
 * @author u57_15
 */
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;
        }
    }
}
Ответить с цитированием