当前位置: 首页 > 知识库问答 >
问题:

乒乓球运动不流畅

郎吉星
2023-03-14

我想做一个正在处理的乒乓球游戏。但是球的移动不是很平稳。我试着改变帧速率并降低球的速度,但是移动速度似乎不是恒定的。这可能是性能问题吗?我是否做错了什么,或者即使对于简单的游戏,处理可能也不是正确的事情?(我的目标是试用processing.js,制作一款没有插件的游戏)。这是我的代码

// Colorset
color scrBG;
color bastards;

// Border for the Paddle
int border;

// The Paddle
int padWid;
int padHei;
float padX;
float padY;

// The Ball
float ballX;
float ballY;
int ballRad;

int speed;
float velX;
float velY;

boolean playing = false;



void setup()
{
  border = 5;

  scrBG = #EEEEEE;
  bastards = #FFF0EB;

  padWid = 80;
  padHei = 10;
  ballRad = 15;
  speed = 5;
  velX = velY = speed;

  size(800, 600);
  background(scrBG);
  noStroke();
  noCursor();
  //frameRate(100);
  smooth();
}

void draw()
{

  background(bastards);drawPaddle();
  drawBall();
}

void drawBall()
{

  if(!playing)
  {
    ballX = padX+padWid/2;
    ballY = height-border-padHei-ballRad/2-2;
  }
  else
  {
if(ballY > height)
{
  ballOut();
}

if(ballY > padY && ballX < padX + padWid && ballX > padX)
{
  velY = -velY;
  ballY = padY-ballRad-1;
}
if(ballX < ballRad)
{
  velX = -velX;
  ballX = ballRad+1;
}
if(ballX > width-ballRad)
{
  velX = -velX;
  ballX = width-ballRad-1;
}
if(ballY < ballRad)
{
  velY = -velY;
  ballY = ballRad+1;
}


ballY += velY;
ballX += velX;   
  }

  fill(0);
  ellipse(ballX, ballY, ballRad*2, ballRad*2);

}

void drawPaddle()
{
  padX = constrain(mouseX, border, width-padWid-border);
  padY = height-padHei-border;

  fill(0);
  rect(padX, padY, padWid, padHei);
}

void startLevel()
{
  playing = true;
}

void resetLevel()
{
  playing = false;
}

void ballOut()
{
  playing = false;
}

void mouseClicked()
{
  if(playing)
  {
    resetLevel();
  }
  else
  {
    startLevel();
  }
}

共有1个答案

孙才捷
2023-03-14

我觉得你的帧率很高。在处理和Flash等方面,30帧通常是平滑动画的良好速度。我还将所有int都更改为float,因为float更适合平滑动画。

接下来我要看的是增加一些放松,这可能会使它变得平稳。见processing.org信息:

www.processing.org/learning/basics/easing.html

玩一出戏。

 类似资料:
  • 本文向大家介绍如果用乒乓球塞满一个教室,请你估算所需乒乓球数量。相关面试题,主要包含被问及如果用乒乓球塞满一个教室,请你估算所需乒乓球数量。时的应答技巧和注意事项,需要的朋友参考一下 先计算乒乓球的体积:由于测量麻烦,就用一杯水,把乒乓球塞进去,测量溢出水的体积。 再计算乒乓球的直径。 测量教室的宽、高。分别用宽/乒乓球直径=n(取整),高/乒乓球直径=m(取整)。 再用教室的长/乒乓球直径=x(

  • 我试图用Java创建一个简单的乒乓球游戏进行处理。我还没有完成,一切都很顺利,只是我不能让球从乒乓桨上反弹。我已经成功地做到了,如果球低于桨板,它会反弹回来,但出于某种原因,如果球高于桨板,它会穿过。 paddleFunctions选项卡:

  • 通常只有Y轴运动在这样的游戏中可用,但我决定让它在这样一种方式,X轴桨运动也被允许。 起初,我认为这与像素有关,但我也尝试了多种方式改变桨碰撞,但没有任何积极的结果。无论我试了多少次,球都不会从桨上弹下来。 代码非常简单,我每次只移动1px: 为了移动桨叶,我使用简单的标志,在按键时将移动方向设置为“开”,在按键释放时设置为“关”。我在不定式循环中运行它,所以它不断地被执行。 这就是“run()”

  • 9.1.3 编程案例:乒乓球比赛模拟 众所周知,中国乒乓球项目的技术水平世界第一,以至于所有比赛的冠军几乎都由中国球员包办。为了增强乒乓球运动的吸引力,提高其他国家的人对这项运动的兴趣,国际乒联 想了很多办法来削弱中国球员的绝对优势,例如扩大乒乓球的直径、禁用某些种类的球拍、 改变赛制等等。在本节中,我们将编写程序来模拟乒乓球比赛,以便研究一项针对中国球员 的规则改革是否真的有效。这项改革是:从

  • 本文向大家介绍python使用pygame实现笑脸乒乓球弹珠球游戏,包括了python使用pygame实现笑脸乒乓球弹珠球游戏的使用技巧和注意事项,需要的朋友参考一下 今天我们用python和pygame实现一个乒乓球的小游戏,或者叫弹珠球游戏。 笑脸乒乓球游戏功能介绍 乒乓球游戏功能如下: 乒乓球从屏幕上方落下,用鼠标来移动球拍,使其反弹回去,并获得得分,如果没有接到该球,则失去一条命。玩家有一

  • 本教程将教你如何使用 Kivy 编写一款乒乓球游戏。我们将从一个基本的应用程序开始,描述创建这个游戏的每个步骤。 Kivy 是用 Python 和 Cython 编写的,基于 OpenGL ES 2,支持各种输入设备并拥有丰富的部件库。使用相同的代码,你可直接实现多平台应用,包括 Windows、macOS、Linux、Android 和 iOS。所有 Kivy 部件都支持多点触控。