You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Processing封装drawPlayer绘制飞船后按键移动功能失效如何解决

问题原因

  • 你在draw()函数中调用drawPlayer()时传入了固定的50,50坐标值,没有使用按键逻辑修改的全局x、y变量,所以不管怎么按按键,飞船永远被绘制在固定位置,看起来就像移动失效了。
  • 额外注意:你自定义的drawPlayer()函数的形参也叫x、y,属于函数内的局部变量,和全局的x、y重名,虽然不影响功能,但建议修改形参名避免后续混淆。

修复方案

只需要修改draw()函数中的调用逻辑,把固定参数换成全局的x、y即可,以下是完整可运行的修正代码:

float x=0;
float y=0;

void setup(){
  size(500,500);
}

void draw(){
  background(0);
  // 把固定的50,50替换为全局变量x、y
  drawPlayer(x,y);
}

// 优化:修改形参名避免和全局变量重名
void drawPlayer(float playerX, float playerY){
  stroke(0);
  strokeWeight(2);
  fill(#F5F5F5);
  circle(playerX,playerY,50);
  fill(0);
  circle(playerX,playerY,20);
  triangle(playerX,playerY,playerX-8,playerY+25,playerX+8,playerY+25);
  fill(105,105,105);
  rect(playerX-20,playerY+20,40,5);
  rect(playerX-25,playerY+25,50,15);
  fill(255,255,0);
  triangle(playerX-25,playerY+25,playerX-40,playerY+35,playerX-25,playerY+40);
  triangle(playerX+25,playerY+25,playerX+40,playerY+35,playerX+25,playerY+40);
  fill(#F5F5F5);
  arc(playerX,playerY+40,50,20,0,PI,CHORD);
}

void keyPressed(){
  if(key == 's')
  y = y + 10;
  if(key =='w')
  y = y - 10;
  if(key =='a')
  x= x - 5;
  if(key =='d')
  x= x + 5;
}

内容的提问来源于stack exchange,提问作者Thanh Phuong Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:24:02