Forum zamknięte. Zapraszamy do grupy na Facebooku
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Poruszanie się po mapie 2D [PROBLEM !!!]
11-24-2014, 09:25 PM (Ten post był ostatnio modyfikowany: 11-24-2014 09:37 PM przez lolo.)
Post: #1
Question Poruszanie się po mapie 2D [PROBLEM !!!]
Witam otóż mam taki problem napisałem program i chciałem dodać do niego poruszanie się po mapie 2D ale nie działa. Pomimo poprawnego czytania klawiszu przez program.

Kod:
//////////////////////////////////// Engine ////////////////////////////////////
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;

public class engine extends Applet implements KeyListener
{
	//Applet
	int ya = 600;
	int xa = 400;
	static Applet applet;
	//Importowanie map.java
	map map = new map();
	//Dodawanie timera
	Timer timer = new Timer();
	//Bufor
	Image bufor;
	Graphics bg;
	//Textury
	static int stan = 1;
	Image water;
	Image grass;
	Image player;
	Image tree;
	
	public void init()
	{
		//Ustawianie appletu
		applet = this;
		applet.addKeyListener(this);
		applet.setSize(ya,xa);
		applet.setBackground(Color.LIGHT_GRAY);
		applet.setName("Game");
		//Ustawianie buforu
		bufor = createImage(ya,xa);
		bg = bufor.getGraphics();
		//Ustawianie timera
		timer.scheduleAtFixedRate(map,10,10);
		//Wczytywanie funkcji map.java
		map.cmap();
		//Wczytywanie txt
		water = getImage(getDocumentBase(),"image/water.png");
		grass = getImage(getDocumentBase(),"image/grass.png");
		player = getImage(getDocumentBase(),"image/player.png");
		tree = getImage(getDocumentBase(),"image/tree.png");
	}
	
	public void update(Graphics g)
	{
		bg.clearRect(0,0,ya,xa);
		paint(bg);
		g.drawImage(bufor,0,0,applet);
	}
	
	public void paint(Graphics g)
	{
		rysujPlansze(g);
	}
	
	public void rysujPlansze(Graphics g)
	{
		for(int i=0;i<map.mapa.length;i++)
		{
			for(int j=0;j<map.mapa[0].length;j++)
			{
				switch(map.mapa[i][j])
				{
				case 0:
					g.drawImage(grass,40*j,40*i,this);
					break;
				case 1:
					g.drawImage(water,40*j,40*i,this);
					break;
				case 2:
					g.drawImage(tree,40*j,40*i,this);
					break;
				case 9:
					g.drawImage(player,40*j,40*i,this);
					break;
				}
			}
		}
	}

	public void keyPressed(KeyEvent arg0)
	{
		switch(arg0.getKeyChar())
		{
		case 38:
			//Góra
			map.ruszaj(\'g\');
			break;
		case 40:
			//Do
			map.ruszaj(\'d\');
			break;
		case 37:
			//Lewo
			map.ruszaj(\'l\');
			break;
		case 39:
			//Prawo
			map.ruszaj(\'g\');
			break;
		default:
			System.out.println(arg0.getKeyCode());
			break;
		}

	}
	public void keyReleased(KeyEvent arg0) 
	{
		
		
	}
	public void keyTyped(KeyEvent arg0) 
	{
		
		
	}
}
//////////////////////////////////// Map ////////////////////////////////////
import java.util.TimerTask;


public class map extends TimerTask
{
	int mapa[][] = new int[10][15];
	int p1 = 5;
	int p2 = 12;
	
   public void run() 
	{
		engine.applet.repaint();
	}

	public void cmap()
	{
		int mapa2[][] =  {
				{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
				{1,0,0,2,2,0,0,0,0,0,0,0,0,0,1},
				{1,0,0,0,2,2,2,0,0,0,0,0,0,0,1},
				{1,0,0,2,2,2,2,0,0,0,0,0,0,0,1},
				{1,0,0,2,0,2,0,0,0,0,0,0,0,0,1},
				{1,0,0,0,0,0,0,0,0,0,0,0,9,0,1},
				{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
				{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
				{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
				{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
			};
		for(int i=0;i<mapa.length;i++)
		{
			for(int j=0;j<mapa[0].length;j++)
			{
				mapa[i][j] = mapa2[i][j];
			}
		}
	}
	
	public void ruszaj(char gdzie)
	{
		switch(gdzie)
		{
		case \'g\':
			break;
		case \'d\':
			break;
		case \'l\':
			if(mapa[p1][p2-1]==0)
			{
				mapa[p1][p2-1]=9;
				mapa[p1][p2]=0;
				p2--;
			}
			break;
		case \'p\':
			break;
		}
		
	}
}


Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-24-2014, 09:59 PM (Ten post był ostatnio modyfikowany: 11-24-2014 10:00 PM przez lolo.)
Post: #2
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
W klasie engine zmień w liniach 92 , 96, 100, 104 na wartości typu char np. case 38: na case 'g':

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 04:32 PM (Ten post był ostatnio modyfikowany: 11-25-2014 04:41 PM przez Dandys.)
Post: #3
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Nie mogę tak zrobić gdyż to 'g' oznacza góra. A nie przycisk. Ale spróbuje i napisze czy działa.

[EDIT:]
Działa ale raczej nikt nie będzie grał na klawiszach l,p,d,g.

[EDIT2:]
Zmieniłem na w,s,a,d. Okazało się, że trzeba było też w map to zmienić.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 04:39 PM
Post: #4
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Oczywiście wiesz, że możesz ustawić inne klawisze.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 05:44 PM
Post: #5
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Tak wiem ale teraz mam inny problem jak zrobić aby np. chodzenie w lewo było widoczne na postaci.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 05:52 PM
Post: #6
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Możesz rozwinąć, co masz na myśli?

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 06:06 PM
Post: #7
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Chodzi mi o to aby ludzik który będzie się poruszał np. w lewo to żeby on też był obrócony i odgrywała się mini animacja 2D (GIF).
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 07:40 PM
Post: #8
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Nie możesz np. obracać GIFa we właściwą stronę?

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
11-25-2014, 08:09 PM
Post: #9
RE: Poruszanie się po mapie 2D [PROBLEM !!!]
Źle mnie zrozumiałeś. Chodzi mi o to aby podczas poruszania była wyświetlana animacja GIF. A i mam do ciebie takie pytanko jak zamienić teraz funkcje z appletu do jframe ?
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości