急求小鱼在水里自由游动算法

panzhiguo1008 2011-08-02 10:09:00
急求小鱼在水里自由游动算法,如多彩水族箱里面的鱼 自由游动
...全文
596 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu071011 2012-10-29
  • 打赏
  • 举报
回复
太可惜了,我不小心把我以前写的那个自由移动的代码搞丢了。我的思路是,每次都为小鱼定一个移动的目标坐标。一旦到达目标坐标就重新随机一个新的目标坐标。随机出新的目标坐标后,将新目标与当前位置进行比较。如果发现x坐标或者y坐标比当前位置大,则执行“x或Y+=n”这样的操作,反之则执行“x或y-=n”这样的操作。这样做的好处是,小鱼高度自由,活动范围十分随机。因为不是所有的鱼都是到了鱼池边再转弯的。
GODloong 2011-08-04
  • 打赏
  • 举报
回复
package pan.move;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.view.View;

public class MovingPictureView extends View implements Runnable{
int left=0,top=0;
int dx=1,dy=1;
Handler handler;
Bitmap bitmap;
Bitmap bitmap2;
Boolean isRuning=true;
public MovingPictureView(Context context) {
super(context);
bitmap=((BitmapDrawable)getResources().getDrawable(R.drawable.icon)).getBitmap();
bitmap2=new BitmapFactory().decodeResource(getResources(), R.drawable.icon);

handler=new Handler();
new Thread(this).start();
}
protected void onDraw(Canvas canvas){
canvas.drawBitmap(bitmap, left, top, null);
canvas.drawBitmap(bitmap2,left,top,null);
}

@Override
public void run() {
// TODO Auto-generated method stub
while(isRuning){
dx=left<0||(left+bitmap.getWidth())>getWidth()?-dx:dx;
dy=top<0||(top+bitmap.getHeight())>getHeight()?-dy:dy;

left+=dx;
top+=dy;

handler.post(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
invalidate();
}
});
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
}

}}
panzhiguo1008 2011-08-04
  • 打赏
  • 举报
回复
package pan.move;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.view.View;

public class MovingPictureView extends View implements Runnable{
int left=0,top=0;
int dx=1,dy=1;
Handler handler;
Bitmap bitmap;
Bitmap bitmap2;
Boolean isRuning=true;
public MovingPictureView(Context context) {
super(context);
bitmap=((BitmapDrawable)getResources().getDrawable(R.drawable.icon)).getBitmap();
bitmap2=new BitmapFactory().decodeResource(getResources(), R.drawable.icon);

handler=new Handler();
new Thread(this).start();
}
protected void onDraw(Canvas canvas){
canvas.drawBitmap(bitmap, left, top, null);
canvas.drawBitmap(bitmap2,left,top,null);
}

@Override
public void run() {
// TODO Auto-generated method stub
while(isRuning){
dx=left<0||(left+bitmap.getWidth())>getWidth()?-dx:dx;
dy=top<0||(top+bitmap.getHeight())>getHeight()?-dy:dy;

left+=dx;
top+=dy;

handler.post(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
invalidate();
}
});
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
}

}}
chaoliu1024 2011-08-02
  • 打赏
  • 举报
回复
通过随机数定位鱼的位置
dina656 2011-08-02
  • 打赏
  • 举报
回复
上面写错了 是周围8格。。。
dina656 2011-08-02
  • 打赏
  • 举报
回复
可以把水箱分成许多小格,每次移动到一个小格,每次随机获得一个小格,最好是获取周围9格的任一一格,如果小格出边界了,就再随机一次,或则直接选择对角的小格移动过去,这样的规则你可以自己规定。。
大掌教 2011-08-02
  • 打赏
  • 举报
回复
碰到边界的话就取随机数坐标作为目的地,用个动画移动到目的地就可以了
panzhiguo1008 2011-08-02
  • 打赏
  • 举报
回复
就是可以在水族箱里自由穿梭的鱼的算法代码, 那位大神抽空给我写个事例呀?! 不胜感激,就是说鱼游到边界的时候自己转过头然后随机选择方向继续游
lackl 2011-08-02
  • 打赏
  • 举报
回复
是随机定位位置还是定位鱼的下一个方向?

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧