Arrays 对象在一次移动后继续移动

Arrays 对象在一次移动后继续移动,arrays,processing,Arrays,Processing,我想知道是否有人能帮我做这个项目 我需要让水平移动的球再次开始移动,然后射出另一个垂直移动的球。我怎样才能让这种事情一次又一次地发生,而不是一次又一次地停止 另外,我如何通过键盘上的任意键而不是触摸板来完成球的发射 这是我的节目: intxpos=200; int yPos=700; int xDir=3;//速度 浮球2X; 浮球2y; 浮球2速度=5; 布尔ball2Exist=false; 无效设置(){ 规模(1280960); } 作废提款(){ 背景(255); 填充(255、200

我想知道是否有人能帮我做这个项目

我需要让水平移动的球再次开始移动,然后射出另一个垂直移动的球。我怎样才能让这种事情一次又一次地发生,而不是一次又一次地停止

另外,我如何通过键盘上的任意键而不是触摸板来完成球的发射

这是我的节目:

intxpos=200;
int yPos=700;
int xDir=3;//速度
浮球2X;
浮球2y;
浮球2速度=5;
布尔ball2Exist=false;
无效设置(){
规模(1280960);
}
作废提款(){
背景(255);
填充(255、200、200);
矩形(0550,宽度,高度);
填充(225);
//球员(球)
椭圆(XPO、YPO、140、140);
填充(255、200、200);
xPos=xPos+xDir;

如果(xPos>width-20 | | xPos为了通过按键来完成球的发射,您可以使用与使用该功能相同的方法来使用该功能。为了使水平球在发射球后继续移动,您只需将球的速度
xDir
设置为其旧值。以确保它继续以相同的速度运动方向在将其设置为0之前,您应该使用一个变量来存储其当前值,然后您可以在启动球后将xDir设置为该值。为了有多个红色球,您需要存储一个球信息列表,以便您可以同时绘制多个球。为了有效地执行此操作,您可能需要创建一个

在下面的程序中,我创建了一个ball类来封装所有的ball绘图,我使用它来处理位置和速度的x和y坐标

//水平球
主球;
//红球名单
ArrayList球;
无效设置(){
规模(1280960);
//创建主球
主球=新球(200700,3,0,140,颜色(255,200200));
//创建球的列表
balls=新的ArrayList();
}
作废提款(){
背景(255);
填充(255、200、200);
矩形(0550,宽度,高度);
ellipseMode(中心);
//如果主球与窗口边缘碰撞,则反转速度
mainBall.collisionUpdate();
//拉主球
mainBall.trablell();
//创建arraylist以存储要从列表中删除的球
ArrayList toRemove=新建ArrayList();
//每一个球
用于(球:球){
ball.draull();
//如果球离开屏幕,则需要将其拆下
if(ball.isNotVisible()){
删除。添加(球);
}
}
//拆下所有不可见的球
球。移动球(移动球);
}
无效发射(){
//将新球添加到列表中
添加(新球(mainBall.position.x,mainBall.position.y,0,-5,70,颜色(255,0,0));
}
void mouseClicked(){
发射();
}
按下void键(){
发射();
}
//球类
班级舞会{
PVector位置;
PVector速度;
浮子直径;
颜色c;
球(浮子x、浮子y、浮子x速度、浮子y速度、浮子直径、颜色c){
位置=新的PVector(x,y);
速度=新的PVector(X速度,Y速度);
直径=_直径;
c=_c;
}
void-trablell(){
填充(c);
圆(位置x,位置y,直径);
//更新球的位置
位置。添加(速度);
}
void collisionUpdate(){
如果(位置.x<直径/2 | |位置.x>宽度直径/2 | |位置.y<直径/2 | |位置.y>高度直径/2){
//倒车速度
速度.mult(-1);
}
}
//如果球离开屏幕,则返回true或false
布尔值不可见(){
返回位置.x>宽度+直径| |位置.x<-直径| |位置.y>高度+直径| |位置.y<-直径;
}
}
编辑:

为了使球减速并跳出窗口边界,我还使用了一个随机函数来随机化球减速的速度和速率

//水平球
主球;
//红球名单
ArrayList球;
PVector-oldSpeed;
无效设置(){
规模(1280960);
//创建主球
主球=新球(200700,3,0,140,颜色(255,200200));
//创建球的列表
balls=新的ArrayList();
}
作废提款(){
背景(255);
填充(255、200、200);
矩形(0550,宽度,高度);
ellipseMode(中心);
//如果主球与窗口边缘碰撞,则反转速度
mainBall.collisionUpdate();
//拉主球
mainBall.trablell();
//创建arraylist以存储要从列表中删除的球
ArrayList toRemove=新建ArrayList();
//每一个球
用于(球:球){
//球在屏幕内反弹
ball.collisionUpdate();
//放慢球的速度
慢球速度(随机(0.98,0.999));
ball.draull();
//如果球离开屏幕,则需要将其拆下
if(ball.isNotVisible()){
删除。添加(球);
}
}
//拆下所有不可见的球
球。移动球(移动球);
}
无效发射(){
如果(!mainBall.isstational()){
oldSpeed=mainBall.speed;
主球设定速度(0,0);
}否则{
//将新球添加到列表中
添加(新球(mainBall.position.x,mainBall.position.y,0,random(-8,-5),70,color(255,0,0));
//使主球再次移动
主球设定速度(旧速度);
}
}
void mouseClicked(){
发射();
}
按下void键(){
发射();
}
//球类
班级舞会{
PVector位置;
PVector速度;
浮子直径;
颜色c;
球(浮子x、浮子y、浮子x速度、浮子y速度、浮子直径、颜色c){
位置=新的PVector(x,y);
速度=新的PVector(X速度,Y速度);
直径=_直径;
c=_c;
}
void-trablell(){
填充(c);
圆(位置x,位置y,直径);
//更新球的位置
位置。添加(速度);
}
无效设定速度(浮动X速度、浮动Y速度){
速度=新的PVector(X速度,Y速度);
}
无效设定速度(PVector\u spe