「java控制鼠标移动范围」java控制鼠标移动范围变大

博主:adminadmin 2022-12-08 19:54:09 84

本篇文章给大家谈谈java控制鼠标移动范围,以及java控制鼠标移动范围变大对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java 鼠标控制人物移动,地图随人物移动

去学习A星寻路,可以得到最短路径,其中也包括了绕开障碍物的代码,然后就是动画的图片切换了,如果说要地图跟随主角移动,那个应该是滚屏操作,也就是说你主角往右走,超过窗口或者屏幕(全屏)坐标一半的时候,地图整个往左移动,速度和主角的一样就出来效果了。如果你看不懂A星的话,那咂就给你一段BFS的C++语言代码,自己转换成JAVA代码写法(就是改些关键字,有不少经典的游戏算法都来自C/C++)就可以了,这个是简化版的A星寻路,一样可以找到最近的路径,你把path 这个路径记录下来再换算成像素位置就可以得到行走的具体步伐了...

#include "stdafx.h"

#include iostream

using namespace std;

const int rows = 10;//行数

const int cols = 10;//列数

const int nummax = 4;//每一步,下一步可以走的方向:4个

//四种移动方向(左、右、上、下)对x、y坐标的影响

//x坐标:竖直方向,y坐标:水平方向

const char dx[nummax] = {0,0,-1,1};

const char dy[nummax] = {-1,1,0,0};

//障碍表

char block[rows][cols] = {

0,1,0,0,0,0,0,0,0,0,

0,1,1,0,1,1,1,0,0,0,

0,0,0,0,0,0,0,0,0,0,

1,0,1,0,0,0,0,0,0,0,

0,0,0,0,0,0,1,1,1,0,

0,1,0,0,0,0,1,0,0,0,

0,0,0,0,0,0,1,1,0,1,

0,1,0,0,0,1,0,1,0,1,

0,1,1,1,0,0,0,1,0,1,

0,0,0,0,0,0,0,0,0,0,

};

char block2[rows][cols] = {

0,1,0,0,0,0,0,0,0,0,

0,1,1,0,1,1,1,0,0,0,

0,0,0,0,0,0,0,0,0,0,

1,0,1,0,0,0,0,0,0,0,

0,0,0,0,0,0,1,1,1,0,

0,1,0,0,0,0,1,0,0,0,

0,0,0,0,0,0,1,1,0,1,

0,1,0,0,0,1,0,1,0,1,

0,1,1,1,0,0,0,1,0,1,

0,0,0,0,0,0,0,0,0,0,

};

char path[rows][cols] = {0};//记录路径

int startX = 0,startY = 0;//起始点坐标

int endX = rows - 1,endY = cols - 1;//目标点坐标

//保存节点位置坐标的数据结构

typedef struct tagQNode{

char x,y;

int parentNode;//父节点索引

}QNode;

//打印路径

void printPath()

{

cout  ""  endl;

for (int i = 0;i  rows;++i)

{

for (int j = 0;j  cols;++j)

{

if (1 == path[i][j])

{

cout  "♀";

}

else if(block2[i][j]==0)

cout  "∷";

else if(block2[i][j]==1)

cout  "■";

}

cout  endl;

}

cout  endl;

cout  endl;

}

void BFS()

{

int num = rows * cols;

//利用数组来模拟队列

QNode *queue = (QNode *)malloc(num * sizeof(QNode));

//起始点入队列

queue[0].x = queue[0].y = 0;

queue[0].parentNode = -1;//起始点没有父节点

int front = 0,rear = 1;//队列的头和尾

while(front != rear)//队列不为空

{

for (int i = 0;i  nummax;++i)

{

    char nextX,nextY;//下一步的坐标

nextX = queue[front].x + dx[i];

nextY = queue[front].y + dy[i];

//下一个节点可行

if (nextX = 0  nextX  rows   nextY = 0  nextY  cols   0 == block[nextX][nextY])

{

    //寻找到目标点

if (nextX == endX  nextY == endY)

{

    //生成路径

path[nextX][nextY] = 1;

int ParIn = front;

while(ParIn != -1)

{

path[queue[ParIn].x][queue[ParIn].y] = 1;

ParIn = queue[ParIn].parentNode;

}

//printPath();

}

//入栈

queue[rear].x = nextX;

queue[rear].y = nextY;

queue[rear].parentNode = front;

++rear;

//标记此点已被访问

block[nextX][nextY] = 1;

}

}

++front;

}

free(queue);

}

int _tmain(int argc, _TCHAR* argv[])

{

BFS();

printPath();

system("pause");

    return 0;

}

在Java中有没有一个方法可以让鼠标移到某个位置

java.awt.Robot类中的

mouseMove(int x, int y)将鼠标指针移动到给定屏幕坐标。

Java 程序实现鼠标点击 键盘等事件

这个用MouseListener里的mouseEntered(MouseEvent

e)方法。

鼠标进入区域就产生事件反应。

如果之前申明了点击事件可以在entered时间里呼叫clicked事件。

java中控制鼠标点击的方法

//利用 java.awt.Robot 类来自动完成一些键盘或鼠标的动作,下面是一个小例子

//程序流程:模拟鼠标左键点击 开始--运行--CMD--DIR--CLS--EXIT

//模拟右键点击 移动到右下角--右键点击--调整日期和时间--退出

import java.awt.*;

import java.awt.event.*;

import javax.swing.JOptionPane;

//Test.java

public class Test {

public static void main(String[] args) throws Exception {

final Robot rb = new Robot();

new Thread(){

public void run(){

rb.delay(2000);

//回车

rb.keyPress(KeyEvent.VK_ENTER);

rb.keyRelease(KeyEvent.VK_ENTER);

}

}.start();

JOptionPane.showMessageDialog(null,"以下程序自动执行,包括本对话框,请不必进行人为干预.\n如果不能正常执行程序,请先关闭输入法");

//设置开始菜单的大概位置

int x = 40;

int y = Toolkit.getDefaultToolkit().getScreenSize().height-10;

//鼠标移动到开始菜单,

rb.mouseMove(x,y);

rb.delay(500);

//单击三次开始菜单

for(int i=0; i3; i++)

pressMouse(rb,InputEvent.BUTTON1_MASK,500);

rb.delay(1000);

//运行CMD命令 r cmd enter

int[] ks = {KeyEvent.VK_R,KeyEvent.VK_C,KeyEvent.VK_M,KeyEvent.VK_D,KeyEvent.VK_ENTER,};

pressKeys(rb,ks,500);

rb.mouseMove(400,400);

rb.delay(500);

//运行DIR命令 dir enter

ks = new int[]{KeyEvent.VK_D,KeyEvent.VK_I,KeyEvent.VK_R,KeyEvent.VK_ENTER};

pressKeys(rb,ks,500);

rb.delay(1000);

//运行CLS命令 cls enter

ks = new int[]{KeyEvent.VK_C,KeyEvent.VK_L,KeyEvent.VK_S,KeyEvent.VK_ENTER};

pressKeys(rb,ks,500);

rb.delay(1000);

//运行EXIT命令 exit enter

ks = new int[]{KeyEvent.VK_E,KeyEvent.VK_X,KeyEvent.VK_I,KeyEvent.VK_T,KeyEvent.VK_ENTER};

pressKeys(rb,ks,500);

rb.delay(1000);

//右键测试

x=Toolkit.getDefaultToolkit().getScreenSize().width-10;

rb.mouseMove(x, y);

//如果是双键鼠标,请改用InputEvent.BUTTON2_MASK试试,我没有这种鼠标

pressMouse(rb,InputEvent.BUTTON3_MASK,500);

//显示日期调整对话框 a

pressKeys(rb,new int[]{KeyEvent.VK_A},1000);

rb.delay(2000);

pressKeys(rb,new int[]{KeyEvent.VK_ESCAPE},0);

rb.delay(1000);

new Thread(){

public void run(){

rb.delay(1000);

//回车

rb.keyPress(KeyEvent.VK_ENTER);

rb.keyRelease(KeyEvent.VK_ENTER);

}

}.start();

JOptionPane.showMessageDialog(null,"演示完毕!");

}

//鼠标单击,要双击就连续调用

private static void pressMouse(Robot r,int m,int delay){

r.mousePress(m);

r.delay(10);

r.mouseRelease(m);

r.delay(delay);

}

//键盘输入

private static void pressKeys(Robot r,int[] ks,int delay){

for(int i=0; iks.length; i++){

r.keyPress(ks[i]);

r.delay(10);

r.keyRelease(ks[i]);

r.delay(delay);

}

}

}

java中的mouse事件

mouseover 鼠标移到某个对象上发生的事件

mouseout 鼠标从某个对象上离开发生的事件

click 鼠标单击事件

dclick 鼠标双击事件

clickdown 鼠标按下不松开发生的事件

clickdown 鼠标松开鼠标按键发生的事件

java控制鼠标移动范围的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java控制鼠标移动范围变大、java控制鼠标移动范围的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。