五子棋游戏的简单实现(Java入门小游戏手把手教学)

本文手把手教你使用Java实现一个简单的五子棋游戏,涵盖需求分析、界面设计、业务逻辑、模型构建及测试。通过游戏实现,学习Java编程、封装等概念,包括视图、控制器和模型的架构设计。
摘要由CSDN通过智能技术生成

##五子棋*
需求分析
完成一个简单的五子棋游戏

界面

  1. 窗体【带标题和背景】
  2. 棋盘【棋盘,棋子】
  3. 图标【白子,黑子,重来】

业务

  1. 页面展示
  2. 选择先走的棋子
  3. 落子开始下棋
  4. 黑白切换
  5. 判断输赢,如何判断赢了
  6. 重来

模型

  1. 棋子
  2. 棋盘
  3. 位置
  4. 状态数据

架构

  1. 视图(View):展示界面
  2. 控制器|处理器(Controller):处理请求,动作,处理数据
  3. 模型(Model):数据存储
  4. 常量(Constant):保存固定数据
  5. 测试(Test):每一步都应该测试,确保正确性

**
实现

  1. 新建包、准备资源、工具类、模型

资源

  1. 静态资源,图片,音频等

工具类

package com.example.constant
    public class Constant {
   
        //窗口宽高
        public static  final int WINDOW_W = 800;
        public static  final int WINDOW_H = 650;
        //窗口位置
        public static  final int WINDOW_X = 300;
        public static  final int WINDOW_Y = 200;
        
        //棋盘格子边长
        public static  final int NODE_W = 30;
        //棋子路径
        public static  final String WHITE_PATH = "images/白子.png";
        public static  final String BLACK_PATH = "images/黑子.png";
        //落子半径
        public static  final  int R = 12;
        
        //棋子边长
        public static final int PIECE_W = 24;
        
        //图标宽高
        public static  final int ICON_W = 120;
        public static  final int ICON_H = 60;
        
        //图标的位置
        public static  final int WHITE_ICON_X = WINDOW_X - 150;
        public static  final int WHITE_ICON_Y = 150;
        public static  final int BLACK_ICON_X = WINDOW_X - 150;
        public static  final int  BLACK_ICON_Y = 250;
        public static  final int START_ICONX = WINDOW_X - 150;
        public static  final int START_ICONy = 350;
        
        //图标路径
        public  static  final  String WHITE_ICON = "images/白子.png";
        public  static  final  String BLCK_ICON = "images/黑子.png";
        public  static  final  String RESTART_ICON = "images/重来png";
        
        
        public  static  final  int BLACK = -1;
        public  static  final  int WHITE = 1;
        public  static  final  int NONE = 0;
        
        
}

模型

  1. Postion:每一个棋子的位置【在二维数组中的行列】
  2. Node:棋盘中的每一个格子【同时也映射棋子】
  3. CheckerBoard:棋盘
  4. Stamp:状态类,游戏是否开始,该谁下,检查当前落子是否赢得比赛

视图和控制器

基本界面
只提供最基本的窗体和静态内容的展示【棋盘,图标】,后期可以有选择的重绘整个棋盘
在这里插入图片描述

BaseFrame

package view;

import controller.BaseFrameController;
import util.Constant;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

/*
* 基本窗体
*  显示初始内容
*  设置:位置,大小,标题,背景*/
public class BaseFrame extends JFrame {
   
    BaseFrameController baseFrameController = new BaseFrameController();

    //窗体初始化
    public  BaseFrame(){
   
        super.setLocation(Constant.WINDOW_X,Constant.WINDOW_Y);//位置
        super.setSize(Constant.WINDOW_W,Constant.WINDOW_H);//大小
        super.setTitle("五子棋");//标题
        super.setBackground(new Color(255,255,255)); //BG COLOR
        super.setResizable(false);
        super.setVisible(true);
        super.addWindowListener(new WindowAdapter() {
   
            @Override
            public void windowClosing(WindowEvent e) {
   
                System.exit(0); //退出程序
            }
        });

    }
/*绘制窗体内容
* 图标*/

    @Override
    public void paint(Graphics g) {
   
        baseFrameController.paintCheckerBoarad(g);
        try {
   
            baseFrameController.paintIcon(g);
        } catch (IOException e) {
   
            e.printStackTrace();
        }

    }
}
基本控制器Basectroller

```java
package controller;
/*
* 基本界面的处理
* 绘制棋盘
* 绘制图表*/

import model.CheckerBoard;
import model.Node;
import util.Constant;

import javax.imageio.ImageIO;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class BaseFrameController {
   
    //绘制棋盘
    //遍历棋盘 利用棋子自身的绘制工能将自己展示
    public void  paintCheckerBoarad (Graphics g){
   
        for (Node[] nodes : CheckerBoard.checkerboard) {
   
            for (Node node:nodes){
   
                node.drawNode(g);
            }

        }

    }
    /*画图标
    * 白子
    * 黑子
    * 重来
    * 数据在常量类中【路径】【大小】【位置】*/
    public void  paintIcon(Graphics g) throws IOException {
   
        //白子 黑子 重来图标
        Image whiteImage = ImageIO.read(new File(Constant.WHITE_ICON));
        Image blackImage = ImageIO.read(new File(Constant.BLCK_ICON));
        Image start = ImageIO.read((new File(Constant.RESTART_ICON)));

        g.drawImage(whiteImage,Constant.WHITE_ICON_X,Constant.WHITE_ICON_Y,Constant.ICON_W,Constant.ICON_H,null);
        g.drawImage(blackImage,Constant.BLACK_ICON_X,Constant.BLACK_ICON_Y,Constant.ICON_W,Constant.ICON_H,null);
        g.drawImage(start,Constant.START_ICONX,Constant.START_ICONy,Constant.ICON_W,Constant.ICON_H,null);
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值