• java课程设计大作业写的 2018小游戏(含jar包,带音效)
  • 该项目为经典版本的五子棋游戏和自创的毁灭玩法所结合,总体而言是一个休闲的小游戏。其中的规则不难,主要是为了丰富大家的文娱生活,让大家在忙碌的学习课后可以轻松一小下。这就是本程序的编写初衷。众所周知,...

    1. 前言

    该项目为经典版本的五子棋游戏和自创的毁灭玩法所结合,总体而言是一个休闲的小游戏。其中的规则不难,主要是为了丰富大家的文娱生活,让大家在忙碌的学习课后可以轻松一小下。这就是本程序的编写初衷。众所周知,经典版本的五子棋不过就是判断5连和5连以上的胜负,而这里的毁灭版,可以“毁灭”对方的4连状态,从而达到己方的攻击 ,而使己方达到胜利。而对方亦可以运用这种方法获得胜利。

    2. 需求分析

    首先,我们需要了解该程序是怎么编写的,需要用到哪些工具,用到哪些知识和方法。以及是如何运用该方法。

    1:了解五子棋的运行机制。

    2:了解博弈的对战机制,如:怎么获得胜利,判断胜利的条件。

    3:游戏主界面的构造,以及模型的建立。

    4:各种功能如何实现,各个部分怎么构成一个整体。

    5:事件的处理。

    6:如何生成棋盘,以及如何生成棋子。

    7:对计时工具的设计,如何运用到多线程来解决。

    3. 概要设计

    对我要实现的相应功能,用一个框架图可以来概述该程序各个部分的相依关系,以及各个功能是如何实现。如何将这些功能整合成为一个游戏

     

     

    通过该流程图,我们可以看出,要完成一个五子棋游戏。必须有两大类,主界面类和相关的事件处理类,而主界面类包括菜单界面的布局、五子棋盘的生成、棋子的生成、和各种消息框的提示。对于事件处理类,我们要监听各种按钮,分别实现他们相应的功能。例如开始按钮,当点击开始按钮后应该进入执棋的阶段,在执棋的过程中又要在棋盘中生成新棋子,与主界面的棋盘相联系。还有点击游戏设置按钮,应该给于相应的用户提示,需要输入什么信息来设置游戏。在这里,游戏设置按钮主要是为了设置游戏的限行时间,由此增加游戏的难度。悔棋按钮不用多说,毁灭按钮是基于悔棋按钮的设计之上的一个按钮。可以毁掉对方的棋子。‘

    然而我认为在编写代码中最关键的部分有三点,一是如何生成棋盘,二是如何生成棋子,三是如何对胜负进行判断。只要抓住这三个大点,这个游戏就算是成功了一大半,下面对该游戏的框架进行详细设计。

    4. 详细设计

    需要用到的重要知识:

     

    1:mouselistener()

    功能:监听鼠标相关状态.

    mouseClicked(MouseEvente) 鼠标按键在组件上单击(按下并释放)时调用。

    mouseEntered(MouseEvente) 鼠标进入到组件上时调用

    mouseExited(MouseEvent e)   鼠标离开组件时调用。

    mouseExited(MouseEvent e)鼠标离开组件时调用。

    mouseReleased(MouseEvent e)  鼠标按钮在组件上释放时调用

    mousePressed(MouseEvente)  鼠标按下时调用

    e.getX();获取鼠标当前按下的位置的X坐标;

    e.getY();获取鼠标当前按下的位置的Y坐标;

    在设置布局时通常要用到这两个函数辅助找到相应的坐标。

     

    这些是对鼠标的监控实现的功能,需要在窗口中添加addMouseListener()方法;

     

     

    2:Graphics 类

    是所有图形的抽象基类,允许程序在组件上图像上进行绘制

     

    功能:覆写JFrame 的paint()方法来使用,通过repaint()来调用

    主要方法:drawstring();使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。

    setFont();设置字体的属性。

    setColor();设置颜色。

    drawOval();画圆,用于画棋盘的棋子,drawoval是空心的圆形边框

    fillOval();画图,用于画棋盘的棋子,fillOvail是实心的圆

    drawRect();绘制指定矩形的边框。

    fillRect();绘制指定实心矩形

    drawImage();绘制指定图像中当前可用的图像。

    3:frame类()

    功能:实现主界面的布局

    主要方法:主类继承自Jframe,在主类的构造函数中实现布局的设置。

    setIconImage(Imageimage);设置窗体的图标,从文件filename中获得图标。

    setTitle(Stringsting);设置标题为字符串string;

    setDefaultCloseOperation();设置关闭窗体的操作

    setResizable(Booleann);设置窗体是否为大小可以改变。

    setLayout();设置窗体的布局

    setBounds(intx,int y,int width,int height)设置控件的边界以及坐标

    setEditable()设置文本框是否可输入。

    4: JOptionPane

     

    方法名

    描述

    showConfirmDialog

    询问确认问题,回答 是/否/取消

    sowInputDialog

    要求用户输入数据

    showMessageDialog

    告知用户发生的消息

    showOptionDiaog

    综合以上三个方法

     

    5:Thread类;

    功能:实现多线程,计时器的主要实现方法。

    主要方法:主类实现Runnable接口,重写Thread类的run方法。

    Threadt1 = new Thread(this);

    实现主类线程的创建

    t1.start();启动线程,执行run方法;

    t1.sleep(time);使线程休眠time 毫秒。

    t1.stop();使线程停止运行.

     

     

    需要实现的功能:

    1:点击开始游戏时在界面上有黑子或白子先行的提示,然后玩家开始行棋。

    2:点击游戏设置时提示相应输入限制时间的信息,让玩家设置限定时间。

    3:点击悔棋时给玩家一次悔棋机会。

    4:点击毁灭时对方玩家棋子变成己方颜色,并且变成方形。

    5:帮助,给出相关信息提示帮助。

     

    就三大关键给出解决—》

    1:如何生成棋盘

    首先在主类中定义一个二维数组,int cb[][] = new int[15][15];

    我将它命名为cb,英文名全写是chessboard.它的长度为15行15列,在这里可以对棋盘进行相关的数值存储。然后,在paint()绘图方法中,定义一个图片文件,BufferedImage image =null并且初始化,然后运用IO调用本地的图片。在这里我是自制了一张图片用来作为该游戏的背景,直接在paint()中读取背景文件,g.drawImage(0,0,this)直接绘画在窗口上。

    2:如何生成棋子

    在1中我们已经定义好了一个二维数组,往二维数组中存储数据就是生成棋子的步骤。用1表示黑子,2表示白子,3表示白色方子,4表示黑色方子。当我需要在棋盘的某一点上落子时,获取该点的坐标,转化成相应的二维数组,cb[x][y]=1;

    就是在该落点上下黑子,同理cb[x][y]=2就是白子。此时棋子以及生成完成。作为数据的状态保存在二维数组中,方便于胜负的判断。

    3:如何判断输赢。

    在2中我们已经生成好了棋子,并且将棋子的位置存贮在棋盘当中,只需要对二维数组进行判断就能得出胜负。此时打印出的二维数组应该是这样

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 2 0 0 0 0 0 0 0 0 0

    0 0 0 0 2 0 0 0 1 0 0 0 0 0 0

    0 2 0 0 0 0 0 0 1 0 0 0 0 0 0

    0 0 0 0 0 0 2 0 1 0 0 0 0 0 0

    0 0 0 0 0 0 0 1 1 0 0 0 0 0 0

    0 0 0 0 2 0 0 0 1 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    判断输赢就变得容易,只需要判断二维数组中相关数据相邻5次的情况。运用isWin()函数判断横向纵向左上左下右上右下的数据情况,下面有相关方法的具体代码展示。.

    4:如何给游戏设计计时

    首先,我们需要给设置时间的按钮绑定监控。在按下按钮后要求用户输入限制的时间,进行相应的操作。当用户输入时间大于0时,启动启动线程,执行时间的递减。

    简而言之,就是当黑方行棋时,计时器开始执行逐步递减,当白方行棋时,黑方的时间停止递减,轮到白方的时间递减。当时间用尽时,游戏就结束了。


    源码程序都在这:点击打开链接


    展开全文
  • java小游戏课程设计 2020-07-07 23:30:54
    java编写的gui类型游戏,可用与课程设计,图片音乐资源均包含下载可直接使用
  • 运行示例: 图形界面由swing组件构成 生成地图的算法如下 ...创建地图算法(produceMap):先将二维数组全置为1,代表初始状态全为墙。先随机产生两个不重合的点,一个作为人的起点,另一个作为箱子的起点。...
  • java课程设计大作业 写的21点小游戏(文档+代码)使用了GUI
  • 最好还是自己做,一款Java版的桌面应用,连连看。课程设计
  • 华容道游戏简介: 华容道,古老的中国游戏,以其变化多端、百玩不厌的特点与魔方、独立钻石棋一起被国外智力专家并称为“智力游戏界的三个不可思议”。它与七巧板、九连环等中国传统益智玩具还有个代名词叫作“中国...
  •     ...import java.awt.Graphics;  import java.awt.Image;  import java.awt.Rectangle;  import java.awt.Toolkit;  import java.util.List;    /**   * 炸弹类   *
  • 大二下学期java课程设计 2018-05-15 13:37:06
    具体到我的下载页下载(开源)
  • 一、团队课程设计博客链接: https://www.cnblogs.com/chenhuilin/p/10275664.html 二、个人负责模块或任务说明: 模块:GUI设计(游戏面板,登录面板,主窗体,显示关卡面板) 三、自己的代码提交记录截图 四、...
  • JAVA课程设计 俄罗斯方块 2019-08-20 19:46:23
    2.游戏实现:移动、旋转、消除方块统计得分、暂停游戏、暂停后继续游戏、此轮游戏未结束开启新一轮游戏游戏未结束退出游戏。 3.排行榜:按分数排名、按局数排名(尚待改进) 一、团队介绍 团队名称:俄罗斯方块 ...
  • java做过的小游戏 2019-08-21 11:04:19
    技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很容易理解,...
  • 大学java课程设计-简单五子棋前言效果图课设要求五子棋介绍五子棋介绍游戏玩法系统需求分析系统的设计与实现项目工程结构运行环境代码设计 前言 第一次写博客,不知道写些什么,就打算记录自己在大学期间的课程设计...
  • import java.awt.*; import java.awt.event.*; /** * Sample application of Rassia game * * @author Zhefan Jin * @version 1.00 07/05/28 */ class GamePanel extends Frame { /** * The attributes of...
  • 俄罗斯方块 相信大家从小就玩过俄罗斯方块的,多余的话就不多说了,代码是有生命的,就让代码来说话好了 ...[java] view ...import java.awt.Color;...import java.awt.Font;...import java.awt.G
  • 4.1 游戏详细设计类 4.2 javax.swing的描述 4.3游戏实现主要方法  第五章 性能测试与分析 5.1 系统测试 5.2 游戏界面菜单选项的功能测试 5.3 按键事件的功能测试 5.4 纸牌的运算测试 5.5 测试结果分析  第六章 ...
  • JAVA的一些课程设计题目 2010-07-01 16:14:00
    本人学校里JAVA课程设计的一些题目,分享给大家,大家可以拿来练练手!1,课题:算术运算测试功能要求:该程序用字符界面实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算...
  • Java课程设计———扫雷 2019-07-31 18:25:50
    java课程设计——扫雷小游戏 二、个人负责模块或任务说明: 模块:GUI登陆界面设置,用户密码验证及其监听,菜单。 三、自己的代码提交记录截图: 四、自己负责模块或任务详细说明 1.设置版面: 2....
  • java做一个2048小游戏 2017-05-08 11:33:11
    昨天,自己突发奇想,能不能在忙碌的学习里抽一点时间来做一点事情,然后,我就有了一个要做一个2048小游戏的想法。说真的,java我已经认真学习了一段时间了,现在也刚刚学到Swing,虽然做这个2048还有很多东西没有...
  • 记忆测试小游戏内容及流程见这一篇博文:C语言 记忆测试(Memory Test)小游戏的实现 时间进度条的添加没有成功,因此先不添加进度条,详见Java jProgressBar进度条的玄学; 参考资料: JAVA中修改JOptionPane...
1 2 3 4 5 ... 20
收藏数 16,060
精华内容 6,424