FeedingFrenzy大鱼吃小鱼

一、个人任务简述

1.负责创建鱼相关的类,鱼的碰撞检测,团队博客的主要编写

2.完成的任务与功能

序号完成功能与任务描述
1创建鱼类设置我方和敌方的鱼类属性
2用户信息储存用户信息,核对用户信息,创建用户类
3*鱼的碰撞检测检测所在我方鱼所在矩形和敌方鱼所在矩形是否重叠,当矩形重叠时判断为碰撞。
4编辑团队博客整理团队项目,编辑组织语言,构建团队博客,发布博客

3.Git提交记录截图:

4.参考git地址或博客地址

https://github.com/s-jm21/FeedingFrenzy

5.团队博客链接

http://t.csdn.cn/E05Mz

二、功能架构图

二、本人负责功能详解

  1. *鱼的碰撞检测

获取鱼类绘制自身的矩形方法,检测所在我方鱼所在矩形和敌方鱼所在矩形是否重叠,当矩形重叠时判断为碰撞。当我方鱼的积分大于敌方鱼的积分,在控制台输出碰撞了,积分增加,敌方鱼消失;反之,我方鱼的积分小于敌方鱼,游戏结束并失败。

package fish;
//我方鱼与敌方鱼碰撞检测
   if(myFish.getRec().intersects(enamy.getRec())) {
    if(myFish.level>=enamy.type) {
     System.out.println("碰撞了");
     enamy.x=-200;
        enamy.y=-200;
        GameUtils.count=GameUtils.count+enamy.count;
    }else {
     state=2;
    }
    
    
   }

2.创建鱼类

        创建我方鱼类:设置了我方鱼类的属性,即设置出现位置,移动速度,类型等。

        创建敌方鱼类:设置敌方鱼类的属性,即设置左右两边的鱼随机出现位置,移动速度,分数等;设置敌方不同类型鱼的属性,例如boss鲨鱼出现的位置。

package fish;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
 
public class Enamy {
 Image img;//定义图片
 //定义物体坐标
 int x;
 int y;
 int width;
 int height;//定义物体坐标
 int speed;//定义移动速度
 int dir=1;//方向:从左向右是1,从右向左是-1
 int type;//类型
 int count;//分值
 //绘制自身方法
 public void paintSelf(Graphics g) {
  g.drawImage(img, x, y, width, height,null);
 }
 //获取自身矩形用于碰撞
 public Rectangle getRec() {
  return new Rectangle(x,y,width,height);
 }
 
}
//敌人boos属性
public class Enamy_Boss extends Enamy {
 Enamy_Boss(){
  this.x=-1000;
  this.y=(int)(Math.random()*700+100);
  this.width=340;
  this.height=340;
  this.speed=100;
  this.count=0;
  this.type=10;
  this.img=GameUtils.bossing;
 }
 
}
//左边移动敌方小鱼的属性
public class EnamyLeft extends Enamy{
 EnamyLeft(){
  this.x=-45;
  this.y=(int)(Math.random()*700+100);//随机坐标
  this.width=45;//宽
  this.height=69;//高
  this.speed=10;//速度
  this.count=1;//分数
  this.type=1;//类型
  this.img=GameUtils.enamyl1;//图片
 }
 
}
 //右边移动敌方小鱼的属性
public class EnamyRight extends Enamy{
 EnamyRight(){
  this.x=1400;
  dir=-1;
  this.y=(int)(Math.random()*700+100);
  this.width=45;
  this.height=69;
  this.speed=10;
  this.count=1;
  this.type=1;
  this.img=GameUtils.enamyr1;
 }
 
}
//省略其他地方子鱼类

3.用户信息

(1)储存用户信息

 public static ArrayList<UserInfo> userInfoArrayList = new ArrayList<>();
    {
        userInfoArrayList.add(new UserInfo("hangman","123456"));
        for (UserInfo userInfo : userInfoArrayList) {
            System.out.println("用户信息:"+userInfo.getName()+"  "+userInfo.getPaw());
            System.out.println("--------------------------------------------");
        }
    }

(2)核对用户信息

public boolean contains(UserInfo userInfo){
        //for增强
      for (UserInfo rightuser : userInfoArrayList) {
          //集合user
          if (userInfo.getName().equals(rightuser.getName()) && userInfo.getPaw().equals(rightuser.getPaw())) {
              //相同则通过进行下一步
              return true;
          }
      }
      return false;
  }

(3)创建用户类

public class UserInfo {
    private String name;
    private String paw;
    public UserInfo(String name, String paw) {
        this.name = name;
        this.paw = paw;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPaw() {
        return paw;
    }

    public void setPaw(String paw) {
        this.paw = paw;
    }
}

4.编辑团队博客

整理团队项目,编辑组织语言,构建团队博客,发布博客

三、课程设计感想

无法正确的使用多线程编程模型,导致程序运行缓慢或出现问题,对面向对象程序设计和编程思想不够深入。学习了Java的事件处理机制,了解了事件的分类等知识。学习了多线程模型,总结了很多经验。面对游戏逻辑的思考有很大的困难。在如何解决在使用github时经常无法进入页面的问题。查找了很多相关教学视频等的教程,仍然无法完全改善这个问题。在本次课程设计中,我深刻体会到了软件开发的整个流程,从需求分析到设计、编码、测试、调试等各个方面都需要认真的思考和努力实践。同时,我也深入理解了团队合作的重要性,学习了如何沟通、协商和分工,提高了代码协作和版本控制的能力。通过本次课程设计,我不仅加深了对 Java 编程语言的理解和掌握,更重要的是锻炼了自己的团队协作和问题解决能力,为今后的软件开发工作打下了坚实的基础。

四、展望

1.对多线程模型的使用比较困难,对游戏逻辑的思考有一定困难。

2.课设后想要进一步学习Java web技术,通过学习和练习更加熟悉Java面向对象编程的基础知识,加强Java对面向对象编程思想和设计模式等方面的知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值