猫史档案馆


java制作一个2D旋转矩阵???

用户:音律猫猫音律猫猫查看:1 回复:4 评论:1 创建时间:2024-08-06T13:19:33


这个猫站不支持java语言只有javascript...那我就在javascript上写了啊

注意我写的是java语言不是script,但是这上面没有,script应该也可以运行,但是这两个是有区别的啊!!!

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.*;
import java.lang.*;
public class GameTest{
public static int cameraX=0,cameraY=0;
public static double direction=0;
  public static void main(String[] args){
    class MyCanvas1 extends Canvas{
      public void paint(Graphics g){
        Graphics2D g2 = (Graphics2D) g;
        g2.fillOval(500,270,20,20);
        g2.fillOval((int)(500+Math.round(((0-cameraX)*Math.cos(direction))-((0-cameraY)*Math.sin(direction)))),(int)(270+Math.round(((0-cameraX)*Math.sin(direction))+((0-cameraY)*Math.cos(direction)))),20,20);
	//g2.fillOval(5-cameraX,5-cameraY,20,20);
      }
    }
    try{
      JFrame jframe1=new JFrame();
      jframe1.setSize(1080,1080);
      jframe1.setVisible(true);
      Container container1 = jframe1.getContentPane();
      container1.setBackground(Color.WHITE);
      jframe1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      MyCanvas1 mycanvas1 = new MyCanvas1();
      jframe1.add(mycanvas1);
      jframe1.addKeyListener(new KeyAdapter(){
        public void keyPressed(KeyEvent keyevent1){
	  if(keyevent1.getKeyCode()==KeyEvent.VK_W){
	    cameraX-=(int)(3*Math.sin(direction));
            cameraY-=(int)(3*Math.cos(direction));
	  }
	  if(keyevent1.getKeyCode()==KeyEvent.VK_S){
	    cameraX-=(int)(-3*Math.sin(direction));
            cameraY-=(int)(-3*Math.cos(direction));
	  }
	  if(keyevent1.getKeyCode()==KeyEvent.VK_D){
	    cameraX-=(int)(-3*Math.cos(direction));
            cameraY-=(int)(3*Math.sin(direction));
	  }
	  if(keyevent1.getKeyCode()==KeyEvent.VK_A){
	    cameraX-=(int)(3*Math.cos(direction));
            cameraY-=(int)(-3*Math.sin(direction));
	  }
          if(keyevent1.getKeyCode()==KeyEvent.VK_RIGHT){
	    direction+=1;
	  }
	  if(keyevent1.getKeyCode()==KeyEvent.VK_LEFT){
	    direction-=1;
	  }
        }
      });
      while(true){
        Thread.sleep(100);
        mycanvas1.repaint();
      }
    }catch(InterruptedException e1){
       e1.printStackTrace();
    }
  }
}


回复

上一页1 页 / 共 1下一页
音律猫猫音律猫猫

求回复:如何添加碰撞箱???

点赞1


评论


蓝要起飞蓝要起飞

懂了,用C#运行

点赞1


评论


蓝要起飞蓝要起飞

我有个思路,如果是矩形,可以根据边构造一个一次函数,判断碰撞边是否相交

点赞1


评论


蓝要起飞蓝要起飞

还有个方法,可以通过检测是否有重叠的像素

点赞1


评论