C++小球移动

C++小球移动,第1张

可以用一个定时器,和一个全局的x,y坐标

每个一秒(或别的时间),就改变

x,y坐标,并让窗口重画而OnPaint中只需要一句

dcEllipse(x,y,width,height);

就行了

clc,clear;

%一个三维随机运动的小球

r=05;%球的半径

%运动的范围

x1=0;x2=30;

y1=0;y2=30;

z1=0;z2=30;

%初始位置  随机生成

x0=rand(1)(x2-x1-2r)+x1;

y0=rand(1)(y2-y1-2r)+y1;

z0=rand(1)(z2-z1-2r)+z1;

pos=[x0;y0;z0];

figure(1)

[x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r);

surf(x,y,z,ones(size(x))) %画出来球

n=200;%随机运动的次数

p=1;  %p可以用来控制每次运动距离的大小

for i=1:n

    %产生运动的方向与运动距离,用一个随机向量表示

    s=0;

    while(s==0)

        direct=rand(3,1)-05;

        dd=direct/norm(direct,2);

        dd=ddp;

        post=pos+dd;

        if (post(1)>=x1+r&&post(1)<=x2-r)&&(post(2)>=y1+r&&post(2)<=y2-r)&&(post(3)>=z1+r&&post(3)<=z2-r)

            s=1;

        end

    end

    pos=pos+dd;

    [x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r);

    surf(x,y,z,ones(size(x))) %画出来球

    axis([x1 x2 y1 y2 z1 z2])

    pause(01);  %设置暂停时间

end

因为是随机运动   如果每次运动的距离设置的不大,小球基本上是在初始位置的范围内运动

import androidappActivity;

import androidosBundle;

import androidviewMotionEvent;

import androidviewView;

import androidviewViewOnTouchListener;

import androidwidgetLinearLayout;

public class MoveballActivity extends Activity {

/ Called when the activity is first created /

@Override

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutmain);

LinearLayout root = (LinearLayout)findViewById(Ridroot);

final DrawView draw = new DrawView(this);

drawsetMinimumWidth(300);

drawsetMinimumHeight(500);

drawsetOnTouchListener(new OnTouchListener(){

public boolean onTouch(View arg0, MotionEvent event){

drawcurrentX = eventgetX();

drawcurrentY = eventgetY();

drawinvalidate();

return true ;

}

});

rootaddView(draw);

}

}

import androidcontentContext;

import androidgraphicsCanvas;

import androidgraphicsColor;

import androidgraphicsPaint;

import androidviewView;

public class DrawView extends View{

public float currentX = 40 ;

public float currentY = 50 ;

public DrawView (Context context){

super(context);

}

public void onDraw(Canvas canvas){

superonDraw(canvas);

//创建画笔

Paint p = new Paint();

//设置画笔的颜色

psetColor(ColorRED);

//绘制一个小圆(作为小球)

canvasdrawCircle(currentX, currentY, 15, p);

}

}

跟随手指移动的小球,参考一下吧。

楼上说的对,用棋盘格的贴图,它是maya自带的程序贴图,你需要修改参数实现横条的效果,默认的棋盘格是黑白相间的正方形,即UV是1:1的,你需要在选中棋盘格的属性中更改之,打开参数面板,你可以一一测试!

我发到你邮箱去吧!,发我好长时间哦~~~~~~

在vc++的win32 application 应用程序的工程打开运行,也就是说我用windows程序编写的。

里面没有完全照你的要求编写,原因有两个:

第一:你有要求:“一个五颜六色的小球能在屏幕上随机行走(按不同方向和轨迹运动)。”那么适合在编写二维平面程序。

第二:有又来了第二个要求:“小球的轮廓和色彩明晰,动画显示逼真”,这就要求在三维空间中编写,所以,两个在技术上有冲突(至少对我来说呵呵~~)。

我最后在编写了一个在三维空间中运动的物体,用键盘上下键可以运动人的视野和物体,用鼠标运动可以启发物体的走动

我发到你邮箱去吧,但是注意运行的时候一定要注意不要把我的程序拷贝到VC++中去,你就直接双击我发给你的其中的那个 dsw文件,就可以正确的打开。

有问题还可以问

看看符合要求不?

Option Explicit

Dim x, y As Integer '匀速旋转小球的位置

Dim A As Integer '角度

Private Sub Form_Load()

Show

MePicture1Width = 2000

MePicture1Height = 2000

MePicture1Scale (-1000, -1000)-(1000, 1000)

A = 0

MeTimer1Interval = 100

End Sub

Private Sub Timer1_Timer()

MePicture1Cls

MePicture1Circle (0, 0), 500

MePicture1PSet (0, 0)

A = A + 1

If A = 360 Then A = 0

x = 500 Sin(A)

y = 500 Cos(A)

MePicture1Circle (x, y), 20, vbRed

End Sub

以上就是关于C++小球移动全部的内容,包括:C++小球移动、Matlab编写程序实现一个随机运动的小球、求一android程序源码 让小球沿指定路径运动等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10122226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存