Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Java ( klasa z potworami )

Ostatnio zmodyfikowano 2013-01-16 16:37
Autor Wiadomość
hakr1921
Temat założony przez niniejszego użytkownika
Java ( klasa z potworami )
» 2013-01-13 00:23:08
Cześć mam pytanie i zarówno prośbę, jak stworzyć wiele obiektów ma mapie(chodzi mi o potwory), jak na razie mam rysowanie potwora za pomocną draw, mam ustawioną pozycje, ale jak ma wyglądać klasa która będzie odpowiadać że wielokrotne rysowanie czy jak to się tam zwie w javie?

Ma ktoś może jakiś przykład? To by mi wyjaśniło ;)
P-73766
DejaVu
» 2013-01-13 01:35:32
Zapodaj fragmentem do rysowania :P chętnie zobaczę jak się w Javie rysuje :P Co do Twojego problemu - w Javie tak samo jak w C++ istnieją kontenery do przechowywania obiektów. Googlaj ArrayList:
Frazy, które należy wpisać w wyszukiwarkę google:
Przykładowy link: http://javastart.pl/klasy/interfejs-list/
P-73769
m4tx
» 2013-01-13 09:40:13
@up na przykład tak: http://docs.oracle.com/javase/tutorial/2d/index.html :P

@autor, może Ci się przydać: » KursyWytwarzanie Gier 2D, C++ kurs
P-73774
hakr1921
Temat założony przez niniejszego użytkownika
» 2013-01-15 19:53:24
Silnik
C/C++
package com.koniuh;

import java.awt.AWTEvent;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;

import com.koniuh.Enemy.ZmienneEnemy;

@ SuppressWarnings( "serial" )
public class GameEngine extends Canvas implements Runnable {
    public long updateCount = 0L;
    private long period;
    @ SuppressWarnings( "unused" )
    private int reqFps = 30;
    public int lastframeCount;
    private static final long TIMER_RESOLUTION = 1000 * 1000 * 1000;
    public int PozycjaMyszyX = 20;
    public int PozycjaMyszyY = 20;
    public int WcisnietyPrzycisk;
   
    public GameEngine() {
        this.enableEvents( AWTEvent.MOUSE_EVENT_MASK
        | AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.KEY_EVENT_MASK
        | AWTEvent.MOUSE_WHEEL_EVENT_MASK );
        this.setFPS( 30 );
        this.setBackground( Color.BLACK );
        this.setEnabled( true );
        this.setVisible( true );
        this.setLocation( 0, 0 );
        this.setSize( 800, 600 );
        this.setBackground( Color.BLACK );
        this.setEnabled( true );
        this.setVisible( true );
        this.setFocusTraversalKeysEnabled( true );
        this.requestFocusInWindow();
       
    }
    private void setFPS( int fps ) {
        this.period = TIMER_RESOLUTION / fps;
        this.reqFps = fps;
    }
   
    public void start() {
        this.createBufferStrategy( 2 );
        this.requestFocusInWindow();
       
        final Thread thread = new Thread( this );
        thread.setName( "draw" );
        thread.start();
    }
   
    @ Override
    public void run() {
        long startTime = 0L;
        long endTime = 0L;
        long timeDiff = 0L;
        long sleepTime = 0L;
        long overSleepTime = 0L;
        long excess = 0L;
        int frameSkips = 0;
        int frameCount = 0;
        long previousSampleTime = System.nanoTime();
       
        while( true ) {
           
            startTime = System.nanoTime();
            Toolkit.getDefaultToolkit().sync();
           
            update();
           
            do {
                do {
                    final Graphics graphics = getBufferStrategy()
                    .getDrawGraphics();
                    graphics.clearRect( 0, 0, getWidth(), getHeight() );
                    draw( graphics );
                    graphics.dispose();
                } while( getBufferStrategy().contentsRestored() );
               
                getBufferStrategy().show();
            } while( getBufferStrategy().contentsLost() );
           
            Toolkit.getDefaultToolkit().sync();
           
            endTime = System.nanoTime();
            timeDiff = endTime - startTime;
            sleepTime =( period - timeDiff ) - overSleepTime;
           
            if( sleepTime > 0 ) {
                try {
                    Thread.sleep( sleepTime /( TIMER_RESOLUTION / 1000 ) );
                } catch( final InterruptedException ignore ) {
                    Thread.currentThread().interrupt();
                    break;
                }
               
                overSleepTime =( System.nanoTime() - endTime ) - sleepTime;
            } else {
                excess -= sleepTime;
                overSleepTime = 0L;
            }
           
            frameSkips = 0;
           
            while(( excess > period ) ) {
               
                excess -= period;
                update();
                frameSkips++;
            }
           
            frameCount++;
            updateCount += frameSkips + 1;
           
            if( System.nanoTime() - previousSampleTime > TIMER_RESOLUTION ) {
                lastframeCount = frameCount;
                frameCount = 0;
                updateCount = 0;
                previousSampleTime = System.nanoTime();
            }
        }
    }
   
    private void update() {
        Enemy.update();
    }
   
    private void draw( Graphics graphics ) {
        Enemy.draw(( Graphics2D ) graphics );
        graphics.setColor( Color.white );
        graphics.drawString( "FPS - " + lastframeCount, 0, 10 );
        graphics.drawString( "X -" + PozycjaMyszyX, 0, 25 );
        graphics.drawString( "Y -" + PozycjaMyszyY, 0, 40 );
    }
   
    @ Override
    protected void processKeyEvent( KeyEvent e ) {
    }
   
   
   
    @ Override
    protected void processMouseMotionEvent( MouseEvent e ) {
        PozycjaMyszyX = e.getX();
        PozycjaMyszyY = e.getY();
        ZmienneEnemy.PozycjaNaszaX = PozycjaMyszyX;
        ZmienneEnemy.PozycjaNaszaY = PozycjaMyszyY;
       
    }
   
   
   
   
   
    @ Override
    protected void processMouseEvent( MouseEvent e ) {
       
    }
   
}
Klasa z potworem i postacią
C/C++
package com.koniuh;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;



public class Enemy {
   
    static class ZmienneEnemy
    { public static int PozycjaNaszaX = 400;
        public static int PozycjaNaszaY = 500;
        public static int PozycjaWrogaX = 100;
        public static int PozycjaWrogaY = 200;
        public static double przys = 20; }
   
    public static void draw( Graphics2D graphics ) {
       
        graphics.setColor( Color.white );
        graphics.drawRect( ZmienneEnemy.PozycjaNaszaX, ZmienneEnemy.PozycjaNaszaY, 20, 20 );
        graphics.setColor( Color.red );
        graphics.drawRect( ZmienneEnemy.PozycjaWrogaX, ZmienneEnemy.PozycjaWrogaY, 20, 20 );
    }
   
    public static void update() {
        if( ZmienneEnemy.PozycjaNaszaX > ZmienneEnemy.PozycjaWrogaX ) ZmienneEnemy.PozycjaWrogaX++;
       
        if( ZmienneEnemy.PozycjaNaszaX < ZmienneEnemy.PozycjaWrogaX ) ZmienneEnemy.PozycjaWrogaX--;
       
        if( ZmienneEnemy.PozycjaNaszaY > ZmienneEnemy.PozycjaWrogaY ) ZmienneEnemy.PozycjaWrogaY++;
       
        if( ZmienneEnemy.PozycjaNaszaY < ZmienneEnemy.PozycjaWrogaY ) ZmienneEnemy.PozycjaWrogaY--;
       
    }
}

Jak to teraz połączyć? tzn jak tu ogarnąć array'a? ;f
P-74066
m4tx
» 2013-01-16 08:57:15
Z czym konkretnie masz problem? Przeczytałeś kurs, który dałem? :)
P-74085
hakr1921
Temat założony przez niniejszego użytkownika
» 2013-01-16 15:24:02
Przeczytałem go już dawno, jak się bawiłem w allegro, napisałem grę i dokładnie taką samą chce napisać tutaj.
Po prostu potwory mają wychodzić co chwile zza ścian, trzeba zmienić rysowanie w silniku, ale nie wiem dokładnie co.
P-74116
m4tx
» 2013-01-16 16:37:52
Zrób sobie
ArrayList
ę z obiektami typu
Enemy
, a potem w metodzie
draw
 klasy
GameEngine
 daj coś takiego:
C/C++
for( Enemy enemy: enemyArrayList ) {
    enemy.draw(( Graphics2D ) graphics );
}
Prościej już nie umiem :P
P-74121
« 1 »
  Strona 1 z 1