实验二、贪吃蛇的游戏开发

本文介绍了使用Java开发贪吃蛇游戏的过程,包括实验目的、工具和详细步骤。游戏包含初始化界面、蛇的移动与碰撞检测、食物生成与消除、游戏状态判断等功能。文章还展示了游戏运行结果截图,并分享了代码组织结构。
摘要由CSDN通过智能技术生成

实验二、贪吃蛇的游戏开发
1、实验目的:
开发一个贪吃蛇游戏,吃到食物蛇身增长,蛇头撞到自身和四周墙壁死亡。
2、实验工具
通过Java运行输出。
3、实验内容

预习:
实验要求:实现贪吃蛇游戏基本功能,屏幕上随机出现一个“食物”,称为豆子,上下左右控制“蛇”的移动,吃到“豆子”以后“蛇”的身体加长一点,得分增加,“蛇”碰到边界或,蛇头与蛇身相撞,蛇死亡,游戏结束。为游戏设计初始欢迎界面,游戏界面,游戏结束界面。

思路:
1、游戏界面:设计出游戏界面,并同时在其中完成游戏界面的构造、蛇身的构造、食物的构造,同时还要设置定时器,由于画面是每一帧绘制进去的,所以这里用双缓存技术新定义个空图片,然后在其中添加所需的各种元素,然后将空图片添加到窗体中即可。同时,在判定游戏状态时,每次将窗体刷新。游戏界面显示即可完成。
2、游戏过程:在此过程中要定义蛇的运动方向、蛇的移动、蛇吃食物、以及蛇头碰墙及蛇碰到自身的检测。同时用started值得不同情况分别来定义游戏状态,用来判定执行蛇自身的运动。倘若蛇吃到食物,则蛇身长+1,继续运动。
3、游戏结束:此时通过started==2来判定游戏结束,同时公布游戏最终得分,倘若继续游戏,则按空格键重新开始游戏。
4、扩展功能:在窗口中添加提示;按下“空格键”开始游戏、当前分数为:、游戏结束-最终分数为:
来提醒玩家游戏状态。

重点:游戏过程中,要将食物设置在游戏区域内,同时不能出现在蛇身上;
蛇在运动过程中,检测是否撞到自身或者四周墙壁,若撞到,则死亡;
设置键盘监听,通过键盘的上下左右与蛇身的上下左右运动建立联系;
检测游戏区域内食物是否被吃;
重新游戏后,游戏区域内的所有内容重新初始化;

游戏开发思路:
在这里插入图片描述

我的做法是先建立一个Text软件包,里面放一个Snake类和一个Test类,在Snake类中将贪吃蛇所需的全部因素填好,在Test中进行运行。
运行结果如下:
在这里插入图片描述
!](https://img-blog.csdnimg.cn/86c820eb70c646a5abbd462646558212.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5byg5b2m5Lit,size_20,color_FFFFFF,t_70,g_se,x_16)

首先,Snake类:
//定义好蛇长、定时器、游戏背景、食物出现范围、食物出现位置、窗口、标题、蛇移动的方向及蛇运动中的各种问题,同时设置三种情况,startrd == 0, started == 1,started == 2//游戏信息 0-未开始 1-开始 2-结束,同时用监听器与键盘和游戏建立连接,通过上下左右空格键来控制蛇的运动。
运行结果如下:


```java
package Test;

import org.w3c.dom.css.Rect;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.awt.event.*;

public class Snake extends JFrame implements KeyListener, ActionListener, MouseListener {
   

    int slong = 2;//蛇当前长度
    //蛇坐标
    Image offScreenImage=null;
    int[] Snakex = new int[100];
    int[] Snakey = new int[100];
    int fx = 1;//蛇的方向 0-左 1-右 2-上 3-下
    Timer timer = new Timer(150, this);//设置定时器,每100毫秒一次
    //食物位置
    int foodx;
    int foody;
    Random random = new Random();//随机数,随机位置生成食物
    public static int started = 0;//游戏信息 0-未开始 1-开始 2-结束


    //---------------------------------------------------------------------------------------------------------------------
    //窗体
    public void myJFrame() {
   


        this.setTitle("贪吃蛇"); //标题
        this.setSize(800, 600); //窗口大小
        this.setResizable(false); //窗口是否可以改变大小=否
        this.setDefaultCloseOperation(Snake.EXIT_ON_CLOSE); //窗口关闭方式为关闭窗口同时结束程序

        int width = Toolkit.getDefaultToolkit().getScreenSize().width; //获取屏幕宽度
        int height = Toolkit.getDefaultToolkit().getScreenSize().height; //获取屏幕高度
//        System.out.println("宽度:"+width);//测试
//        System.out.println("高度:"+height);//测试

        this.setLocation((width - 800) / 2, (height - 600) / 2); //设置窗口默认位置以屏幕居中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值