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 ;) |
|
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: Przykładowy link: http://javastart.pl/klasy/interfejs-list/ |
|
m4tx |
» 2013-01-13 09:40:13 |
|
hakr1921 Temat założony przez niniejszego użytkownika |
» 2013-01-15 19:53:24 Silnik 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ą 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 |
|
m4tx |
» 2013-01-16 08:57:15 Z czym konkretnie masz problem? Przeczytałeś kurs, który dałem? :) |
|
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. |
|
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: for( Enemy enemy: enemyArrayList ) { enemy.draw(( Graphics2D ) graphics ); } Prościej już nie umiem :P |
|
« 1 » |