package com.bn.NNYY;
import java.util.ArrayList;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.media.MediaPlayer;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class GameView extends SurfaceView
implements SurfaceHolder.Callback{
MyActivity activity;
Paint paint;//画笔
FishingNet fishingnet;//渔网类的引用
BackgroundPic backgroundpic;//背景图片类的引用
Timer timer;//时间类的引用
Score score;//得分类的引用
MediaPlayer mMediaPlayer;//背景音乐播放器类
int pointx;//触控到屏幕的位置,即渔网中心点坐标
int pointy;//触控到屏幕的位置,即渔网中心点坐标
float offsetx=0;//半透明窗口中心点,相对于触控到的中心点的距离
float offsety=0;
KeyThread keythread;//刷帧线程
FishtailThread fishthread;//控制鱼尾摆动的线程
FishGoThread fishgothread;//控制鱼走的线程
FishGeneratorThread fishgeneratorthread;//产生鱼的线程
CatchedFishtailThread catchedfishtailthread;//渔网中的鱼尾摆动的线程
BackgroundPicThread backpicthread;//背景图片变换的线程
TimeRunningThread timeruningthread;//负责倒计时的线程
FishNetThread fishnetthread;//负责渔网图片变化的线程
Bitmap fish1[];//第一组鱼的图片
Bitmap fish2[];//第二组鱼的图片
Bitmap fish3[];//第三组鱼的图片
Bitmap fish_net[];//渔网图片
Bitmap backg_round_pic[];//背景图片
Bitmap board;//木板图片
Bitmap fish_tank;//鱼缸图片
Bitmap defen;//"得分"图片
Bitmap number[];//“数字”图片
Bitmap breakMarkBitmap;//时间分割符
Bitmap bg_transparent;//半透明窗口的背景图片
Bitmap bg_transparent1;//半透明窗口背景图片的红边
ArrayList<SingleFish> afish=new ArrayList<SingleFish>();//生成鱼的类表
ArrayList<SingleFish> del=new ArrayList<SingleFish>();//删除鱼的列表
ArrayList<FishCatched> afishnet=new ArrayList<FishCatched>();//渔网上面的鱼
ArrayList<FishCatched> delfishnet=new ArrayList<FishCatched>();//删除渔网上面的鱼
public GameView(MyActivity activity) {
super(activity);
this.activity=activity;
getHolder().addCallback(this);//注册回调接口
}
@Override
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.clipRect(new Rect(0,0,Constant.SCREEN_WIDTH,Constant.SCREEN_HEIGHT));//只在屏幕范围内绘制图片
canvas.drawColor(Color.WHITE);//界面设置为白色
backgroundpic.drawSelf(canvas, paint);//绘制背景
//绘制正常的鱼
synchronized (afish) {
for(SingleFish fish:afish)//绘制ArrayList中的每一条鱼
{
fish.drawSelf(canvas, paint,0,0);//后边的0,0为偏移量
}
}
//绘制木板
canvas.drawBitmap(board, 0, 7*Constant.SCREEN_HEIGHT/8, paint);
//绘制鱼缸
canvas.drawBitmap(fish_tank, 0, Constant.SCREEN_HEIGHT-Constant.FISHING_TANGK_HEIGHT, paint);
//绘制渔网
if(fishingnet.isDrawNetFlag())//绘制渔网的标志位为true时,绘制渔网
{
fishingnet.drawSelf(canvas, paint,0,0);//后边的0,0为偏移量
}
//绘制渔网上的鱼
synchronized (afishnet) {
for(FishCatched fish:afishnet)//绘制ArrayList中的每一条鱼
{
fish.drawSelf(canvas, paint,0,0);//后边的0,0为偏移量
}
}
score.drawSelf(canvas, paint,0,0);//绘制“得分”和分数(后边的0,0为偏移量)
timer.drawSelf(canvas, paint,0,0);//绘制时间(后边的0,0为偏移量)
//绘制半透明窗口#########################开始绘制######################################
if(fishingnet.isDrawNetFlag())//绘制渔网的标志位为true时,绘制半透明窗口
{
int x=0;
int y=0;
if(pointx>=0&&pointx<Constant.SCREEN_WIDTH/2&&
pointy>=0&&pointy<Constant.SCREEN_HEIGHT/2)
{//左上
x=Constant.TRANSPARENT_POSITION[3][0];
y=Constant.TRANSPARENT_POSITION[3][1];
}else if(pointx>=Constant.SCREEN_WIDTH/2&&pointx<=Constant.SCREEN_WIDTH&&
pointy>=0&&pointy<Constant.SCREEN_HEIGHT/2)
{//右上
x=Constant.TRANSPARENT_POSITION[2][0];
y=Constant.TRANSPARENT_POSITION[2][1];
}else if(pointx>=0&&pointx<Constant.SCREEN_WIDTH/2&&
pointy>=Constant.SCREEN_HEIGHT/2&&pointy<=Constant.SCREEN_HEIGHT)
{//左下
x=Constant.TRANSPARENT_POSITION[1][0];
y=Constant.TRANSPARENT_POSITION[1][1];
}else if(pointx>=Constant.SCREEN_WIDTH/2&&pointx<=Constant.SCREEN_WIDTH&&
pointy>=Constant.SCREEN_HEIGHT/2&&pointy<=Constant.SCREEN_HEIGHT)
{//右下
x=Constant.TRANSPARENT_POSITION[0][0];
y=Constant.TRANSPARENT_POSITION[0][1];
}
offsetx=x+Constant.TRANSPARENT_WINDOW_WIDTH/2-pointx;
offsety=y+Constant.TRANSPARENT_WINDOW_HEIGHT/2-pointy;
canvas.save();
// paint.setAlpha(100);
canvas.clipRect(new Rect(x,y,x+Constant.TRANSPARENT_WINDOW_WIDTH,y+Constant.TRANSPARENT_WINDOW_HEIGHT));
canvas.drawBitmap(bg_transparent, x, y, paint);//绘制背景
//绘制正常的鱼
synchronized (afish) {
for(SingleFish fish:afish)//绘制ArrayList中的每一条鱼
{
fish.drawSelf(canvas, paint,offsetx,offsety);//后边的0,0为偏移量
}
}
//绘制木板
canvas.drawBitmap(board, 0+offsetx, 7*Constant.SCREEN_HEIGHT/8+offsety, paint);
//绘制鱼缸
canvas.drawBitmap(fish_tank, 0+offsetx, Constant.SCREEN_HEIGHT-Constant.FISHING_TANGK_HEIGHT+offsety, paint);
//绘制渔网
if(fishingnet.isDrawNetFlag())//绘制渔网的标志位为true时,绘制渔网
{
fishingnet.drawSelf(canvas, paint,offsetx,offsety);//后边的0,0为偏移量
}
//绘制渔网上的鱼
synchronized (afishnet) {
for(FishCatched fish:afishnet)//绘制ArrayList中的每一条鱼
{
fish.drawSelf(canvas, paint,offsetx,offsety);//后边的0,0为偏移量
}
}
canvas.drawBitmap(bg_transparent1, x, y, paint);//绘制背景
// paint.setAlpha(255);
canvas.restore();
}
//绘制半透明窗口#########################结束绘制######################################
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
pointx=(int) event.getX();
pointy=(int) event.getY();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN://按下
fishingnet.setDrawNetFlag(true);//绘制渔网的标志位为true
fishingnet.setCatchFishFlag(true);//可以捕鱼
fishingnet.getXandY(pointx, pointy);//当触控到屏幕的某一点时,计算渔网应该画在哪个位置
break;
case MotionEvent.ACTION_MOVE://移动
fishingnet.setCatchFishFlag(false);//不可以捕鱼
fishingnet.getXandY(pointx, pointy);//渔网跟着移动
break;
case MotionEvent.ACTION_UP://抬起
fishingnet.setCatchFishFlag(false);//不可以捕鱼
fishingnet.n=0;
fishingnet.setDrawNetFlag(false);//绘制渔网的标志位为false
break;
}
return true;
}
public void surfaceCreated(SurfaceHolder holder) {
paint=new Paint();//创建画笔
paint.setAntiAlias(true);//打开抗锯齿
Constant.changeRadio();//调用常量类中常量赋值的方法
initBitmap();//初始化位图资源
//背景音乐
mMediaPlayer=MediaPlayer.create(activity, R.raw.background);//创建背景音乐播放器
mMediaPlayer.setLooping(true);//循环播放
keythread=new KeyThread(this);//刷帧线程
fishgeneratorthread=new FishGeneratorThread(this);//产生鱼的线程
fishthread=new FishtailThread(this);//鱼尾摆动的线程,必须写在单个鱼的类后面
fishgothread=new FishGoThread(this);//控制鱼走的线程
catchedfishtailthread=new CatchedFishtailThread(this);//渔网中的鱼尾摆动的线程
backpicthread=new BackgroundPicThread(this);//背景图片变化的线程
timeruningthread=new TimeRunningThread(this);//负责倒计时的线程
fishnetthread=new FishNetThread(this);
fishingnet=new FishingNet(fish_net);//渔网类new对象
backgroundpic=new BackgroundPic(backg_round_pic);//创建背景图片类的对象
score=new Score(this,defen,number,breakMarkBitmap);//得分类的对象
timer=new Timer(this,breakMarkBitmap,number);//时间类的对象
//开启全部线程
startAllThreads();
//开启背景音乐
if(activity.backgroundsoundFlag)
{
mMediaPlayer.start();//开启音乐
}
}
public void judgeInFishingNet()//判断鱼是否在渔网�
没有合适的资源?快使用搜索试试~ 我知道了~
小程序 游戏源码休闲小游戏年年有鱼项目(源码+截图).rar
共207个文件
png:128个
class:38个
java:27个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 23 浏览量
2023-03-19
19:39:22
上传
评论
收藏 4.15MB RAR 举报
温馨提示
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。
资源推荐
资源详情
资源评论
收起资源包目录
小程序 游戏源码休闲小游戏年年有鱼项目(源码+截图).rar (207个子文件)
resources.ap_ 1.08MB
NNYY.apk 1.1MB
GameView.class 13KB
ScoreSurfaceView.class 6KB
MainView.class 5KB
MyActivity.class 4KB
LastView.class 4KB
DBUtils.class 3KB
Timer.class 3KB
Score.class 3KB
WellcomeSurfaceView.class 2KB
SingleFish.class 2KB
FishGeneratorThread.class 2KB
WellcomeSurfaceView$1.class 2KB
R$drawable.class 2KB
FishCatched.class 2KB
FishingNet.class 2KB
MainMenuButton.class 2KB
Constant.class 2KB
FishGoThread.class 2KB
CatchedFishtailThread.class 1KB
FishtailThread.class 1KB
FishNetThread.class 1KB
DateUtil.class 1KB
WhichView.class 1KB
BackgroundPicThread.class 1KB
MainView$KeyThread.class 1KB
ScoreSurfaceView$DrawThread.class 1KB
TimeRunningThread.class 985B
KeyThread.class 935B
PicLoadUtil.class 921B
MyActivity$1.class 883B
BackgroundPic.class 847B
R.class 525B
R$color.class 515B
R$string.class 499B
R$layout.class 373B
R$raw.class 370B
BuildConfig.class 331B
R$attr.class 319B
.classpath 475B
classes.dex 51KB
annotations-b8fe4e7e418233f7d0d4621ee82d7924.jar 943B
GameView.java 19KB
MyActivity.java 7KB
ScoreSurfaceView.java 7KB
MainView.java 5KB
R.java 4KB
LastView.java 4KB
WellcomeSurfaceView.java 3KB
DBUtils.java 3KB
SingleFish.java 2KB
Score.java 2KB
Timer.java 2KB
Constant.java 2KB
FishGeneratorThread.java 2KB
FishingNet.java 2KB
MainMenuButton.java 1KB
FishCatched.java 1KB
FishNetThread.java 1KB
FishGoThread.java 1000B
FishtailThread.java 858B
CatchedFishtailThread.java 853B
BackgroundPicThread.java 759B
TimeRunningThread.java 635B
PicLoadUtil.java 615B
KeyThread.java 528B
BackgroundPic.java 508B
DateUtil.java 423B
BuildConfig.java 153B
background.mp3 515KB
main_background.png 98KB
main_background.png 97KB
javaapk.com_0002.png 88KB
javaapk.com_0000.png 87KB
javaapk.com_0001.png 87KB
background3.png 62KB
background2.png 58KB
background3.png 57KB
background2.png 53KB
background4.png 46KB
background4.png 43KB
dukea.png 37KB
dukea.png 37KB
board.png 25KB
board.png 22KB
dukeb.png 20KB
dukeb.png 20KB
fish_net5.png 17KB
fish_net5.png 17KB
fish_net4.png 16KB
fish_net4.png 16KB
fish_net6.png 15KB
fish_net6.png 15KB
fish_net3.png 14KB
fish_net3.png 14KB
fish_net2.png 14KB
fish_net2.png 14KB
fish_net1.png 14KB
fish_net1.png 13KB
共 207 条
- 1
- 2
- 3
资源评论
荣华富贵8
- 粉丝: 124
- 资源: 7649
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功