Aplet + uruchamianie metod

0

Witam,
otoz pisze aplet (gra tetris) - zatrzymalem sie na dosc banalnej rzeczy, ale za to bardzo kluczowej.
Otoz nie wiem gdzie umiescic metode wybor_figury(), tak aby przy uruchomieniu apletu sie uruchomila.
Jakis efekt jedynie daje umieszczenie jej w metodzie paint(), ale butony zmieniaja kolor tylko podczas zmiany rozmiaru okna :((

Bardzo prosilbym o pomoc.

I jeszcze takie pytanie: czy metody init, start, stop, run, destroy sa wymagane przy tworzeniu apletu ??

Pozdrawiam !!!

import java.applet.*;
import java.awt.*;

public class gra extends Applet
{

    //tablica klockow

    int[][] ktab = new int[20][8];

    //tablica butonow - odzwierciedla rozmieszczenie klockow w tablicy
    Button[][] btab = new Button[20][8];

    Panel gridLayoutPanel()
    {
        Panel plansza = new Panel();

        plansza.setLayout(new GridLayout(20,8,0,0)); 

        for(int i=0;i<20; i++)
            for(int j=0; j<8; j++)
            {
                btab[i][j]= new Button();
                btab[i][j].setSize(10, 10);
                btab[i][j].setBackground(Color.gray);
                btab[i][j].setEnabled(false);
                plansza.add(btab[i][j]);
            }
        return plansza;
    }

    public void init()
    {
        Panel panel = gridLayoutPanel();
        setLayout(new BorderLayout());
        add(panel);
        setSize(250,400);
        wybor_figury();
        setFocusable(true);
    }

    public void paint(Graphics g)
    {

        for(int i=0;i<20; i++)
            for(int j=0; j<8; j++)
             if (ktab[i][j] == 1 )
                btab[i][j].setBackground(Color.GREEN);
    }

    public void wybor_figury()
    {
        if( (int)(1+(Math.random()*3)) == 1)
        {
            ktab[0][3]=1;
            ktab[0][4]=1;
            ktab[1][3]=1;
            ktab[1][4]=1;
        }

        if( (int)(1+(Math.random()*3)) == 2)
        {
            ktab[0][2]=1;
            ktab[0][3]=1;
            ktab[0][4]=1;
            ktab[0][5]=1;
        }

        if( (int)(1+(Math.random()*3)) == 3)
        {
            ktab[0][3]=1;
            ktab[1][3]=1;
            ktab[2][3]=1;
            ktab[2][4]=1;
        }
    }

}
0

musisz wiedzieć o czymś takim jak metoda repaint(), byćmoże musisz też wiedzieć coś na temat wątków.
Jeżeli nie wiesz gdzie umieścić daną metode którą zrobiłeś to znaczy że kompletnie nie wiesz jak napisać ten program. To jest częsty błąd-pisanie programu gdy jeszcze nia ma się na niego pomysłu (bo takie marne problemy to chyba nie podchodzą pod extrem programming). Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0