@bublov

Как изменить скорость с помощью клавиш + и -?

У меня есть код
import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import java.awt.event.*;


public class prog {	
	public static void main(String[] args) {
		myFrame okno = new myFrame();
	}
}
class myFrame extends JFrame
{	
    public myFrame()
    {    	
    	myPanel np = new myPanel();
    	Container cont = getContentPane(); 
    	cont.add(np);
    	setBounds(0, 0, 800, 600);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setVisible(true);
    }
}
class myPanel extends JPanel
{	
	private int x= (int) Math.floor(Math.random()*800);
        private int y = (int) Math.floor(Math.random()*600);
        private int x1 = (int) Math.floor(Math.random()*800);
        private int y1 = (int) Math.floor(Math.random()*600);
	private int napr = 5;
	private int napr1 = 5;
	private Image img;	
	private Image fon;
	private Image img1;

  
	private class myKey implements KeyListener  
	{
	   	    public void keyPressed(KeyEvent e)
	   	    {
	   	    	int key_ = e.getKeyCode();
	   	    	if (key_==37) napr = 7;
	   	    	if (key_==39) napr = 3;
	   	    	if (key_==38) napr = 1;
	   	    	if (key_==40) napr = 5;	   	  
	   	    	if (key_==65) napr1 = 7;
	   	    	if (key_==68) napr1 = 3;
	   	    	if (key_==87) napr1 = 1;
	   	    	if (key_==83) napr1 = 5;	
	   	    }
	   	    public void keyReleased(KeyEvent e) {}
	   	    public void keyTyped(KeyEvent e) {}
	}            	
	
	
	public myPanel()
	{    	
 	    addKeyListener(new myKey());
    	setFocusable(true);
    	
		try
		{
	    	img = ImageIO.read(new File("c:\\img\\planeta.png"));
	    	fon = ImageIO.read(new File("c:\\img\\kosmos.png"));
	    	img1 =ImageIO.read(new File("c:\\img\\planeta2.png"));
		}
		catch(Exception exp) {
			System.out.println("Не удалось загрузить изображение!");
		}		
		
		Timer nt = new Timer(0,new ActionListener() {
			public void actionPerformed(ActionEvent e) {
     
       

	           if (napr==0){
	        	   x--;
	        	   y--;
	           }
	           if (napr==1) y--;
	           if (napr==2) {
	        	   x++;
	        	   y--;
	           }
	           if (napr==3) x++;
	           if (napr==4)
	           {
	        	   x++;
	        	   y++;
	           }
	           if (napr==5) {
	        	   y++;
	           }
	           if (napr==6)
	           {
	        	   x--;
	        	   y++;
	           }
	           if (napr==7) {
	        	   x--;
	           }
	           
	           if (y>500)
	           {
	              int g = (int)(Math.random()*3);
	              napr = g;
	           }
	           if(y<=0){
	        	   int g = (int)(Math.random()*7 + 4);
	        	   napr = g;
	           }
	           if(x>700){
	        	   int g = (int)(Math.random()*3);
	        	   if (g>0) napr=g+6;
	        	   else napr=0;
	           }
	           
	           if(x<=0){
	        	   int g = (int)(Math.random()*3) + 2;
	        	   napr = g;
	           }
	           if (napr1==0){
	        	   x1--;
	        	   y1--;
	           }
	           if (napr1==1) y1--;
	           if (napr1==2) {
	        	   x1++;
	        	   y1--;
	           }
	           if (napr1==3) x1++;
	           if (napr1==4)
	           {
	        	   x1++;
	        	   y1++;
	           }
	           if (napr1==5) {
	        	   y1++;
	           }
	           if (napr1==6)
	           {
	        	   x1--;
	        	   y1++;
	           }
	           if (napr1==7) {
	        	   x1--;
	           }
	           
	           if (y1>500)
	           {
	              int g1 = (int)(Math.random()*3);
	              napr1 = g1;
	           }
	           if(y1<=0){
	        	   int g1 = (int)(Math.random()*7 + 4);
	        	   napr1 = g1;
	           }
	           if(x1>700){
	        	   int g1 = (int)(Math.random()*3);
	        	   if (g1>0) napr1=g1+6;
	        	   else napr1=0;
	           }
	           
	           if(x1<=0){
	        	   int g1 = (int)(Math.random()*3) + 2;
	        	   napr1 = g1;
	           }
	           if( ( Math.abs(x1-x) <=75)&&( Math.abs(y1-y)<=75) ){
	        	   if(napr==0){
	        		   napr=4;
                                   napr1=0;
	        	   }
	        	   if(napr==1){
	        		   napr = 5;
                                   napr1 = 1;
	        	   }
	        	   if(napr==2){
	        		   napr = 6;
                                   napr1=2;
	        	   }
	        	   if(napr==3){
	        		   napr = 7;
                                   napr1=3;
	        	   }if(napr==4){
	        		   napr = 0;
                                   napr1 = 4;
	        	   }
	        	   if(napr==5){
	        		   napr = 1;
                                   napr1=5;
	        	   }
	        	   if(napr==6){
	        		   napr = 2;
                                   napr1=6;
	        	   }
	        	   if(napr==7){
	        		   napr = 3;
                                   napr1=7;
	        	   }
	        	   if(napr1==0){
	        		   napr1=4;
                                   napr=0;
	        	   }
	        	   if(napr1==1){
	        		   napr1 = 5;
                                   napr=1;
	        	   }
	        	   if(napr1==2){
	        		   napr1 = 6;
                                   napr=2;
	        	   }
	        	   if(napr1==3){
	        		   napr1 = 7;
                                   napr=3;
	        	   }if(napr1==4){
	        		   napr1 = 0;
                                   napr=4;
	        	   }
	        	   if(napr1==5){
	        		   napr1 = 1;
                                   napr=5;
	        	   }
	        	   if(napr1==6){
	        		   napr1 = 2;
                                   napr=6;
	        	   }
	        	   if(napr1==7){
	        		   napr1 = 3;
                                   napr=7;
	        	   }
	           }
	       
	           
               repaint();				
			}
		});	
		nt.start();
	}	
	
	public void paintComponent(Graphics gr)
	{
	  super.paintComponent(gr);
	  gr.drawImage(fon,0,0,800,600,null);
	  gr.drawImage(img1,x1,y1,100,100 ,null);
	  gr.drawImage(img,x,y, 100, 100, null);
	}

}

Есть вопрос. Как сделать так, чтобы при нажатии клавиш + или - менялась скорость (т.е например было не x-- а x-=2). Суть я уже понял. Надо в класс myKey добавить код клавиш плюс и минус при нажатии на которые менялся бы блок if. Как это реализовать?
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Chame1eon
Пишу скрипты, глотаю кофе!
Попробуй ввести параметр, типо x-=n; и сам параметр n уже меняй
Ответ написан
Комментировать
dimkss
@dimkss
Дополню ответ Green Chameleon :
Замените всюду все x++, x--, y++ и т.д. на x+=speed, y+=speed.
Где speed = 1f
А по нажатию клавиш + / - меняйте скорость speed*=1.1f / speer/=1.1f
Коэфициенты увеличения / уменьшения скорости сами подберете.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы