打鱼网站源码分享(打鱼网站是什么)

大家好,今天小编来为大家解答以下的问题,关于打鱼网站源码分享,打鱼网站是什么这个很多人还不知道,现在让我们一起来看看吧!

使用Java300行写出一个单机捕鱼游戏,效果如下

packageorg.wf.game.fish;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjava.awt.image.BufferedImage;

importjava.io.File;

importjava.io.IOException;

importjava.util.Random;

importjavax.imageio.ImageIO;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

publicclassFishGame{

/**

*@paramargs

*@authorwangfan

*@version捕鱼1.0

*@time2015.06.19

*/

publicstaticvoidmain(String[]args){

//游戏画框

JFramejf=newJFrame(&34;);

jf.setSize(800,480);

jf.setLocationRelativeTo(null);

jf.setResizable(false);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setAlwaysOnTop(true);

//加载鱼池

Poolpool=newPool();

jf.add(pool);

//显示框架

jf.setVisible(true);

pool.action();

}

}

//鱼池类

classPoolextendsJPanel{

privatestaticfinallongserialVersionUID=1L;

BufferedImagebgImage;//背景图片

Fish[]fishs=newFish[20];//所有的鱼

Netnet=newNet();//渔网

booleanisExit;//鼠标是否在游戏界面

intscore,bullet=50;//游戏得分,子弹数

publicPool(){

super();

Filebg=newFile(&34;);

try{

bgImage=ImageIO.read(bg);

}catch(IOExceptione){

e.printStackTrace();

}

//0-8,9-17对应1-9号鱼

for(inti=0;i<fishs.length/2-1;i++){

fishs[i]=newFish(i+1);

fishs[i+9]=newFish(i+1);

}

fishs[18]=newFish(10);

fishs[19]=newFish(11);

}

//画游戏元素

@Override

publicvoidpaint(Graphicsg){

g.drawImage(bgImage,0,0,null);//画背景

for(Fishfish:fishs){

g.drawImage(fish.fishImage,fish.fish_x,fish.fish_y,null);//画鱼

}

if(!isExit){

g.drawImage(net.netImage,net.netX,net.netY,null);//画网

}

//画游戏说明文字

g.setColor(Color.GREEN);

g.setFont(newFont(&34;,Font.ITALIC,20));

g.drawString(&34;,10,25);

g.drawString(&34;+bullet+&34;+score,350,25);

g.drawString(&34;+(net.power%7+1),590,25);

if(bullet<=0){

g.setColor(Color.RED);

g.setFont(newFont(&34;,Font.BOLD,100));

g.drawString(&34;,150,250);

bullet=0;

isExit=true;

net.power=-1;

}

}

//游戏启动方法

publicvoidaction(){

for(Fishfish:fishs){

fish.start();

}

//鼠标监听器

MouseAdapteradapter=newMouseAdapter(){

@Override

publicvoidmousePressed(MouseEvente){

intevent=e.getModifiers();

if(event==4){

net.change();

super.mousePressed(e);

}elseif(event==16){

//减子弹

if(bullet-(net.power%7+1)<=0){

bullet=0;

}else{

bullet-=(net.power%7+1);

}

//捕鱼

for(Fishfish:fishs){

if(!fish.catched){

catchFish(fish);

}

}

}

}

@Override

publicvoidmouseMoved(MouseEvente){

net.moveTo(e.getX(),e.getY());

super.mouseMoved(e);

}

@Override

publicvoidmouseEntered(MouseEvente){

isExit=false;

super.mouseEntered(e);

}

@Override

publicvoidmouseExited(MouseEvente){

isExit=true;

super.mouseExited(e);

}

};

this.addMouseListener(adapter);

this.addMouseMotionListener(adapter);

while(true){

repaint();

}

}

//封装捕鱼的方法

publicvoidcatchFish(Fishfish){

fish.catched=net.catchFish(fish);

if(fish.catched){

score+=2*fish.k;

bullet+=2*fish.k;

}

}

}

//鱼类

classFishextendsThread{

intfish_x,fish_y;//鱼的坐标

BufferedImagefishImage;//鱼的图片

BufferedImage[]fishImages=newBufferedImage[10];//鱼动作的图片

BufferedImage[]catchImages;//鱼的被捕的图片

intfish_width,fish_height;//鱼的宽高

Randomr=newRandom();//鱼y坐标的随机数

intblood;//鱼的血量值

booleancatched;//鱼是否被捕

intk,step_size;//鱼的血量等级,移动速度

publicFish(intm){

super();

StringpreName=m>9?m+&34;:&34;+m;

//通过for循环读取鱼动作图片数组

for(inti=0;i<fishImages.length;i++){

intj=i+1;

StringlastName=j>9?&34;:&34;+j;

Filefile=newFile(&34;+preName+&34;+lastName+&34;);

try{

fishImages[i]=ImageIO.read(file);

}catch(IOExceptione){

e.printStackTrace();

}

}

fishImage=fishImages[0];

fish_width=this.fishImage.getWidth();

fish_height=this.fishImage.getHeight();

fish_x=800;

fish_y=r.nextInt(450-fish_height);

blood=m*3;

this.k=m;

step_size=r.nextInt(5)+1;

//初始化catchImages

if(m>7){

catchImages=newBufferedImage[4];

}elseif(m<=7){

catchImages=newBufferedImage[2];

}

//通过for循环读取鱼被捕图片数组

for(inti=1;i<=catchImages.length;i++){

Filefile=newFile(&34;+preName+&34;+i+&34;);

try{

catchImages[i-1]=ImageIO.read(file);

}catch(IOExceptione){

e.printStackTrace();

}

}

}

//鱼移动的方法

publicvoidmove(){

fish_x-=step_size;

}

@Override

publicvoidrun(){

super.run();

while(true){

move();//调用鱼移动的方法

//如果鱼出界,重新生成

if(fish_x<-fish_width||catched){

turnOut();//鱼被捕,颤动

newFish();

}

change();//调用鱼摇摆游动的方法

try{

Thread.sleep(15);

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

}

//重新生成一条鱼

publicvoidnewFish(){

fish_x=800;

fish_y=r.nextInt(450-fish_height);

if(fish_y>=450){

//System.out.println(fish_height+&34;+fish_y);

}

catched=false;

blood=k*3;

step_size=r.nextInt(5)+1;

}

//鱼摇摆游动的方法

intindex=0;

publicvoidchange(){

index++;

fishImage=fishImages[index/3%10];

}

//鱼被捕动画的方法

publicvoidturnOut(){

for(inti=0;i<catchImages.length;i++){

fishImage=catchImages[i];

try{

Thread.sleep(100);

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

}

}

//渔网类

classNet{

intnetX,netY;//网的坐标

intnetWidth,netHeight;//网的宽高

BufferedImagenetImage;//网的图片

publicNet(){

super();

Filefile=newFile(&34;+1+&34;);

try{

netImage=ImageIO.read(file);

}catch(IOExceptione){

e.printStackTrace();

}

netX=300;

netY=300;

netWidth=netImage.getWidth();

netHeight=netImage.getHeight();

}

//鱼网切换的方法

intpower=0;

publicvoidchange(){

power++;

intx=this.netX+this.netWidth/2;

inty=this.netY+this.netHeight/2;

Filefile=newFile(&34;+(power%7+1)+&34;);

try{

netImage=ImageIO.read(file);

}catch(IOExceptione){

e.printStackTrace();

}

this.netWidth=netImage.getWidth();

this.netHeight=netImage.getHeight();

moveTo(x,y);

}

//渔网移动的方法

publicvoidmoveTo(intx,inty){

this.netX=x-this.netWidth/2;

this.netY=y-this.netHeight/2;

}

//捕鱼

publicbooleancatchFish(Fishfish){

//网的中心坐标

intzX=netX+netWidth/2;

intzY=netY+netHeight/2;

//鱼的身体部分中心坐标

intfX=fish.fish_x+fish.fish_width*2/3;

intfY=fish.fish_y+fish.fish_height/2;

//如果网的中心坐标在鱼的身体部分

if(zX>fish.fish_x&&zX<fish.fish_x+fish.fish_width*2/3

&&zY>fish.fish_y&&zY<fish.fish_y+fish.fish_height){

fish.blood-=((power%7+1)*2);

//System.out.println(fish.blood);

}elseif(fX>netX&&fX<netX+netWidth

&&fY>netY&&fY<netY+netHeight){

//如果鱼的身体部分中心坐标在网里

fish.blood-=((power%7+1)*2);

//System.out.println(fish.blood);

}

returnfish.blood<=0;

}

}

149张图片太多我就没上传了

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

站内搜索