我正在开发Processing(在 Java上运行)中的两人游戏.一个用户将使用WASD键控制其角色,而另一个用户将使用箭头键控制移动.我遇到的问题是,当按下箭头时,使用keyPressed会否定WASD,反之亦然.我已经很长时间了.有谁知道解决方法或注意到我做错了什么?

//global variables

int wide = 600; //canvas width

int tall = 600; //canvas height

int s = 50; //player size

float speed = 2.5; //player movement speed

//colors

int redColor = #CB4646; //player 1 color

int blueColor = #4652CB; //player 2 color

int backgroundColor = #DBE3B3; //background color

float player1X = 600/3-s; //HOW COME width/3 DOESN'T WORK??????????

float player2X = 600*2/3;

float playerY = 600/2-(s/2);

//players

Player player1 = new Player(player1X, playerY, s, speed, "wasd", redColor); //player 1

Player player2 = new Player(player2X, playerY, s, speed, "arrows", blueColor); //player 2

//setup

void setup(){

background(backgroundColor);

size(wide, tall);

smooth();

println(player2.controls);

}

//draw

void draw(){

background(backgroundColor);

player1.usePlayer();

player2.usePlayer();

}

class Player{

//class variables

float x; // x position

float y; // y position

int s; //size

float speed; //speed

String controls; //controls

int colors; //player color

char keyControls [] = new char [4];

//construct

Player(float tempX, float tempY, int tempS , float tempSpeed, String tempControls, int tempColors){

x = tempX;

y = tempY;

s = tempS;

speed = tempSpeed;

controls = tempControls;

colors = tempColors;

}

void usePlayer(){

// draw player

fill(colors);

rect(x, y, s, s);

//move player

keyPressed();

//wraparound

boundaries();

}

void keyPressed(){

//sets controls for wasd

if(controls == "wasd"){

if(key == 'w' || key == 'W'){

y -= speed; //move forwards

}

if(key == 's' || key == 'S'){

y += speed; //move backwards

}

if(key == 'd' || key == 'D'){

x += speed; //move right

}

if(key == 'a' || key == 'A'){

x -= speed; //move left

}

}

//sets controls for arrows

if(controls == "arrows"){

if(key == CODED){

if(keyCode == UP){

y -= speed; //move forwards

}

if(keyCode == DOWN){

y += speed; //move backwards

}

if(keyCode == RIGHT){

x += speed; //move right

}

if(keyCode == LEFT){

x -= speed; //move left

}

}

}

}

//pacman style wraparound

void boundaries(){

if(x == width) x = 2;

if(y == height) y = 2;

if(x == 0) x = width-s;

if(y == 0) y = height-s;

}

}

java 上下键_java-同时使用WASD和方向键相关推荐

  1. java空格键_Java KeyPressed-如果其他键也太旧,则无法检测是否按下了空格键

    如标题所示,在我的Java游戏中,无法检测是否同时按下空格键和其他键. 例如,空格键是射击键,而箭头键则使玩家移动.如果我按下向上箭头键,向左箭头键和空格键,那么它应该向左上方发射子弹. 但是,在使用 ...

  2. java数组键_Java基础之数组

    数组 数组就是用于存储相同数据类型数据的一个容器.可以通过有规律的索引来访问没有规律的元素. 一维数组 定义格式:元素的数据类型[ ] 数组名称 = new 元素的数据类型 [ 数组容器大小 ]: 数 ...

  3. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  4. Java心得--键值、枚举器

    1. 集(Set):和数学上的"集合"概念相对应,是最简单的一种集合. Set集合中不区分元素的顺序,因此也就不记录元素的加入顺序. Set集合中不包含重复元素,即任意的两个元素e ...

  5. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  6. java类结构图_java 集合类结构图

    接口 实现类 保持插入顺序 可重复 排序 使用说明 List ArrayList Y Y N 长于随机访问元素:但插入.删除元素较慢(数组特性). LinkedList Y Y N 插入.删除元素较快 ...

  7. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  8. 【源码+项目部署】Java课程设计项目_Java人力资源管理系统

    对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统! 人力资源管理系统 |Java项目2小时上手编写_源码+数据库拿走不谢!Java实战项目_Java开发https://www.bilib ...

  9. java list键值_java基础之对List,Map,Set等集合键值对的简单认识

    [一.集合] 特征: 数组:定长.可以放基本数据类型. List:变长.只能放对象.有序,可重复. Set :变长.只能放对象.无序,不可重复. Map :变长.只能放对象.无序,键值对. 重要实现类 ...

最新文章

  1. 2018/7/7-纪中某C组题【jzoj1494,jzoj1495,jzoj1496,jzoj1497】
  2. 每日一题(5) —— 逗号表达式
  3. 如何避免_如何避免变频器受负载冲击
  4. hdfs java读写hdfs demo
  5. mysql 优化 修复原理_mysql下表的修复与优化
  6. (转载)Hadoop map reduce 过程获取环境变量
  7. PHP加密解密函数之Base64
  8. 两种简单高效的“反人脸识别”方法
  9. 项目案例模板之登录注册的实现
  10. bootstrap-wysiwyg中JS控件富文本中的图片由本地上传到服务器(阿里云、七牛、自己的数据库)...
  11. 《产品经理面试攻略》PART 9:HR面试题
  12. Unity 接入有道智云AI - 图片翻译
  13. 神舟K650c i7(W350STQ)上成功装好Mac OS X 10.9,兼谈如何安装WinXP、7、8.1、OSX、Ubuntu五系统(Chameleon、MBR)
  14. Kali无线渗透加油破解无线
  15. 【Matlab】如何规范地编写一个MATLAB函数文件
  16. word2vec(2) 背景知识
  17. java将简体中文_【Java】简体中文、繁体中文转换
  18. 阿里巴巴字体图标怎么改变尺寸
  19. 华为路由交换——三层交换机与路由器之间链路实现交互
  20. 修改sublime的快捷键

热门文章

  1. 浅谈金融行业自动化运维
  2. ppt_第十章_DNA非卷积视觉技术
  3. 闲鱼冻结多个欺诈用户:还是治标不治本
  4. 域控内使用策略部署和软件分发
  5. Spring Boot修改启动神图
  6. 自媒体“人工智能小技巧”文章与视频合集(持续更新)
  7. 斑马GK888T打印机跑纸(打印半张以及闪红灯)解决办法
  8. Linux Centos7:11.给系统增加一块硬盘
  9. Linux内存控制器(二)
  10. sublime用浏览器打开方法