java双人贪吃蛇小游戏源码及设计思路

1、双人贪吃蛇java编程思路

本项目仅供学习,侵删。

引言:
双人贪吃蛇是一个简单但有趣的多人游戏,通常由两个玩家各自控制一条蛇,目标是吃掉屏幕上的食物并避免撞到自己或对方,同时尽量让对方先撞到自己。贪吃蛇是java学习的常用案例,通过学习代码,掌握java图形界面AWT和Swing等相关知识。本项目源于【狂神说Java】GUI编程入门到游戏实战,B站搜UP主:遇见狂神说,即可看见教程 。

双人贪吃蛇设计思路:

(1)游戏玩法:

游戏界面:设计一个足够大的游戏区域,可以是网格形式,每个格子可以放置蛇的身体或食物。
玩家控制:每个玩家控制一条蛇,可以使用键盘的箭头键或其他方式来控制蛇的移动方向。如玩家1方向控制为WASD(英文输入法状态),玩家2方向控制为↑ ← ↓→ 。数字1、2、3、4、5可改变小蛇移动速度。
蛇的表示:每条蛇可以用一系列的小图形来表示,每个小图形代表蛇身体的一个部分。

(2)游戏逻辑

蛇的移动:根据定时器定时重画更新蛇的位置。蛇的身体部分跟随蛇头移动,最后一个部分消失,模拟蛇的移动。
食物的生成:随机在游戏区域内生成食物,当被任一玩家的蛇头触碰时,食物被“吃掉”,蛇的长度增加,并且可以再次生成新的食物。
碰撞检测:
撞墙:蛇头如果移动到游戏区域外,游戏结束。
撞自己:蛇头如果移动到自己身体的其他部分,游戏结束。
撞对方:如果一条蛇撞到另一条蛇,游戏结束。

游戏结束条件:任一玩家的蛇撞到墙、自己或撞到对方蛇时,游戏结束。

2、Data数据类

Data数据类负责存储游戏界面图片信息以及蛇的图片信息。

package com.hua.snake;

import javax.swing.*;
import java.net.URL;

//资源路径更改为自己资源的路径
public class Data {
   
   

    //食物
    public static URL foodUrl = Data.class.getResource("/statics/food.png");
    public static ImageIcon food = new ImageIcon(foodUrl);

    //头部图片
    public static URL headerUrl = Data.class.getResource("/statics/header.png");
    public static ImageIcon header = new ImageIcon(headerUrl);

    //侧边信息栏
    public static URL msgUrl = Data.class.getResource("/statics/msg.png");
    public static ImageIcon msg = new ImageIcon(msgUrl);

    //玩家1头部:上下左右
    public static URL upUrl1 = Data.class.getResource("/statics/play1/up.png");
    public static URL downUrl1 = Data.class.getResource("/statics/play1/down.png");
    public static URL leftUrl1 = Data.class.getResource("/statics/play1/left.png");
    public static URL rightUrl1 = Data.class.getResource("/statics/play1/right.png");
    public static ImageIcon up1 = new ImageIcon(upUrl1);
    public static ImageIcon down1 = new ImageIcon(downUrl1);
    public static ImageIcon left1 = new ImageIcon(leftUrl1);
    public static ImageIcon right1 = new ImageIcon(rightUrl1);
    //玩家1身体
    public static URL bodyUrl1 = Data.class.getResource("/statics/play1/body.png");
    public static ImageIcon body1 = new ImageIcon(bodyUrl1);

    //玩家2头部:上下左右
    public static URL upUrl2 = Data.class.getResource("/statics/play2/up.png");
    public static URL downUrl2 = Data.class.getResource("/statics/play2/down.png");
    public static URL leftUrl2 = Data.class.getResource("/statics/play2/left.png");
    public static URL rightUrl2 = Data.class.getResource("/statics/play2/right.png");
    public static ImageIcon up2 = new ImageIcon(upUrl2);
    public static ImageIcon down2 = new ImageIcon(downUrl2);
    public static ImageIcon left2 = new ImageIcon(leftUrl2);
    public static ImageIcon right2 = new ImageIcon(rightUrl2);
    //玩家2身体
    public static URL bodyUrl2 = Data.class.getResource("/statics/play2/body.png");
    public static ImageIcon body2 = new ImageIcon(bodyUrl2);

}

3、StartGame主方法开启

游戏启动类,游戏主方法。

package com.hua.snake;

import javax.swing.*;

public class StartGame extends JFrame {
   
   
    public static void main(String[] args) {
   
   

        //新建一个窗口
        JFrame frame = new JFrame("Java双人贪吃蛇小游戏");
        frame.setBounds(200,50,1100,720);  // 设置窗口的位置和大小
        frame.setResizable(false); //窗口大小不可调整,即固定窗口大小
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭事件,游戏可以关闭
        frame.add(new GamePanel());
        frame.setVisible(true); //将窗口展示出来
    }
}

4、Player类

玩家类,包含玩家小蛇属性,以及小蛇初始化和小蛇移动方法。

package com.hua.snake;


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

public class Player {
   
   
    //定义蛇的数据结构
    int lenth; //蛇的长度
    int[] snakeX = new int[600];  //蛇的坐标x
    int[] snakeY = new int[500];  //蛇的坐标y
    String fx; //蛇的方向 : R:右  L:左  U:上  D:下
    ImageIcon up, down, left, right, body; //蛇图像信息
    boolean isFail; //判断玩家是否失败
    int score; //游戏分数!
    Random random = new Random();

    //初始化蛇ImageIcon 四种
    public void imageSnake(int imageSna) {
   
   
        switch (imageSna
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值