实验二、贪吃蛇游戏开发

本文档介绍了使用Java语言开发贪吃蛇游戏的实验要求和实现细节。游戏包括基本功能,如食物随机生成、蛇的移动和碰撞检测,以及友好的交互界面设计。开发环境选用IntelliJ IDEA Community Edition,代码包括Food、GameFrame、GameHelp、Location、OperationList和Snake等多个类,实现了游戏逻辑和界面展示。游戏还包括分值计算、速度设置和音乐等拓展元素。
摘要由CSDN通过智能技术生成

实验要求

  • 实现贪吃蛇游戏基本功能,屏幕上随机出现一个“食物”,称为豆子,上下左右控制的移动,吃到“豆子以后的身体加长一点。
  • 碰到边界或蛇头与蛇身相撞,蛇死亡,游戏结束。
  • 游戏设计友好的交互界面;例如欢迎界面,游戏界面,游戏结束界面。要有开始键、暂停键和停止退出的选项。
  • 对蛇吃到豆子进行分值计算,可以设置游戏速度,游戏音乐拓展元素。

 程序设计工具

        1.使用JAVA语言,

        2.开发环境:IntelliJ IDEA Community Edition 2021.2

 实验代码部分

Food类

判断食物是否被吃,如果被吃了就重新随机生成一个食物,同时也要判断目标坐标是否在蛇身上。

package 贪吃蛇;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

//定义食物的类,显示和随机生成
public class Food {
    private boolean iseat = false;    //默认没有被吃
    Location foodla = new Location(20,20);        //食物的初始位置
    public void drawFood(Graphics g,int rate) {
        g.setColor(Color.RED);
        g.fillRect(foodla.getY()*rate+10, foodla.getX()*rate+50, rate, rate);
    }
    //获取食物的坐标
    public Location getFoodLocation() {
        return foodla;
    }
    //设定食物坐标
    public void setLocation(Location x) {
        this.foodla = x;
    }
    //食物是否被吃
    public boolean isEat() {
        return iseat;
    }
    //设定食物是否被吃状态
    public void setEat(boolean b) {
        this.iseat = b;
    }
    //如果食物被吃了,就更新食物坐标,食物坐标在(90,60)的范围且不与蛇身重合
    public void updateFood() {
        Random am = new Random();
        foodla = new Location(am.nextInt(51),am.nextInt(51));
    }
}

 GameFrame类

为游戏的主界面,设定界面大小。同时对键盘按键进行监视,用来控制蛇的移动。

package 贪吃蛇;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import 贪吃蛇.Snake.OritentionEum;

//游戏的主窗口
public class GameFrame {
    private Frame f ;             //其实GameFrame直接继承Frame窗口就好
    private int fLocationX = 400;
    private int fLocationY =120;
    private int fWidth = 800;        //窗口宽
    private int fHeight=600;        //窗口高
    private StartPanel sp;          //开始界面Panel
    private GameCanvas gc;        //贪吃蛇画布
    private OerationList ol;    //相关信息
    private int rate =10 ;
    private Snake sk ;
    private Food fd;
    //窗口初始化
    public void frameinit() {
        f = new Frame("启动器");
        f.setLayout(null);     //不使用布局管理,Panel用绝对定位
        sp = new StartPanel(this).panelInit();
        sp.setBounds(280, 180, 280, 300);        //这个是相对于sp的上一级的component的
        f.add(sp);
        this.setAtt(fLocationX,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值