JAVA面向对象程序设计课程设计--大鱼吃小鱼

一、项目简介

  • 《大鱼吃小鱼》是一种基于Java技术的简单游戏,可以在桌面应用程序中运行。玩家扮演着一个生活在海洋中的鱼类,在游戏过程中需要不断地吃掉比自己体积小的鱼来成长,并要躲避比自己体积大的鱼的攻击,以避免被吃掉。游戏的界面主要由一个海底场景和多个鱼组成。每条鱼都有自己的身体大小和速度属性,根据这些属性可以判断出鱼之间的大小关系,从而实现吃或被吃的游戏规则。当玩家的鱼体积增长到一定程度后,也可以去捕捉身体比自己小的其他鱼类。在进行游戏时,玩家可以使用键盘控制自己的鱼移动等,通过不断地提高自己的技能和策略,最终成为海洋之王。

二、项目采用技术

  •  变量、数据类型、判断语句、循环结构、类的继承、简单窗口创建、图形图片绘制、键盘事件、双缓存技术。

三、功能需求分析

1、游戏界面

  •  游戏需要一个逼真的海底场景,以及多个不同种类的鱼等海洋生物。每个游戏元素需要有相应的图片或动画效果,以增加游戏的可玩性。此外,游戏还需要有控制面板、得分牌等辅助信息。

2、鱼类属性

  •  每条鱼都需要具备相应的属性,包括体积大小、速度等,同时还要考虑成长和食物等因素对其属性的影响。

3、鱼类操作

  • 玩家需要能够操纵自己控制的鱼类进行移动、食用其他鱼类、升级等操作。

鱼类操作

4、AI系统设计

  • 游戏中的AI系统需要考虑多个因素来设置敌方鱼类的行为,如视野、移动方式等,以及逃脱策略 。除此之外,还设计了一些特殊的“BOSS”型角色,增加游戏难度。

5、结束游戏

  • 玩家碰到比自己等级高的鱼被吃掉,游戏失败。

四、项目核心代码

1、双缓存技术解决闪烁问题(S)

Image offScreenImage;
//循环调用
	while(true) {
		repaint();
		time++;
		try {
			Thread.sleep(40);
		}catch(InterruptedException e) {
			e.printStackTrace();
		}
	}
	}
public void paint(Graphics g){
		
		//懒加载模式初始化对象
		offScreenImage=createImage(width,height);
		Graphics gImage=offScreenImage.getGraphics(); //获取图片对应的画笔图像,把组件绘制到新的图片中
		//设置背景图片
		bg.paintSelf(gImage,myFish.level);
		switch (state) {
		case 0:
			break;
		case 1:
			myFish.paintSelf(gImage);
			logic();
			for(Enamy enamy:GameUtils.EnamyList) {
				enamy.paintSelf(gImage);
			}
			if(isboss) {
				boss.x=boss.x+boss.dir*boss.speed;
				boss.paintSelf(gImage);
				if(boss.x<0) {
					gImage.setColor(Color.RED);
					gImage.fillRect(boss.x, boss.y,2400, boss.height);
				}
			}
			
			break;
		case 2:
			for(Enamy enamy:GameUtils.EnamyList) {
				enamy.paintSelf(gImage);
			}
			if(isboss) {
				boss.paintSelf(gImage);
			}
			break;
		case 3:
			myFish.paintSelf(gImage);
			break;
		case 4:
			return;
			default:
		
		}
		//把内存当中绘制好的新图片,一次性绘制到主窗口中
		g.drawImage(offScreenImage,0,0,null);
	}

2、关卡难度变化(S)

package fish;
void logic() {
  //关卡难度
  if(GameUtils.count<5) {
   GameUtils.level=0;
   myFish.level=1;
  }else if(GameUtils.count<=15) {
   GameUtils.level=1;
  }else if(GameUtils.count<=50) {
   GameUtils.level=2;
   myFish.level=2;
  }else if(GameUtils.count<=150) {
   GameUtils.level=3;
   myFish.level=3;
  }else if(GameUtils.count<=300) {
   GameUtils.level=4;
   myFish.level=3;
  }else if(GameUtils.count>300) {
   state=3;
  }

3、设置游戏状态(S)

package fish;
switch (state) {
  case 0:
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值