用JAVA做五子棋游戏课程设计,java五子棋课程设计.doc

《java五子棋课程设计.doc》由会员分享,可在线阅读,更多相关《java五子棋课程设计.doc(20页珍藏版)》请在人人文库网上搜索。

1、Java程序设计大作业20112012学年第一学期Java程序设计课程大作业题目: 五子棋 专业: 计算机 班级: 09计算机2班 学号: 090400509 姓名: 张翔 教师: 杨树林 日期:2011年 12月 22 日项目内容单项分值总分选题1题目明确,系统功能较集中482题目难度适宜,有一定的综合性4功能实现3功能完整,能够正确运行6244模块划分合理,程序结构清晰65界面设计合理、易用、协调66设计与实现程序6规范性及文档7代码规范性及注释5108文档内容齐全,格式规范5总体效果9完成总体质量61210软件功能及技术水平6答辩11讲解清楚明了,功能演示流畅66评语总分题目:五子棋作者。

2、:张翔一 引言五子棋游戏是常见的经典游戏,在19*19的棋盘方格上进行对弈,由于时间与基础知识的掌握程度限制,现初步完成简易五子棋的实现。本程序完全由JAVA语言编写而成,单击“开始游戏按钮”将弹出确认对话框,当点击对话框上的“确认”按钮,游戏正式开始;“认输”按钮表示当对弈双方有一方认输时,结束比赛并且输出结果;“关于”按钮的功能可以由制作者自己添加,主要表示游戏的版本等级;“退出”按钮单击时推出对弈比赛。2 系统概述本程序分为两类 ChessBoardFrame类和ChessBoardPanel类游戏开始弹出对话框显示游戏开始 途中如果某一方认输 便可点击 认输按钮 之后显示黑棋/白棋认输。

3、 白棋/黑棋获胜 点击退出按钮 即可退出整个程序4 系统功能结构设计x = 10 & x = 50 & y 10(y - 50) % 20 10i = i + 1;j = j + 1;arrij = 0;arrij= chess;游戏结束自定义类说明类名:ChessBoardFrame作用:显示五子棋游戏的主界面在整个屏幕中的位置与大小继承的父类:JFrame实现接口:无public class ChessBoardFrame extends JFrame/自定义一个继承于Jframe的类用于获取五子棋背景图的大小,在整个屏幕上的显示位置类名:ChessBoardPanel作用:实现五子棋的各。

4、个功能,通过画直线的成员函数画出棋盘、通过判断函数对鼠标的判断以保证正确落子、在判断函数中还包括了对输与赢的判断、加上清屏函数、每次重新开始时进行清屏。在此类中主要使用了JAVA本身所具有的一些功能,如:鼠标适配器、鼠标单击时间的捕捉、窗口重绘、颜色填充等功能。继承的父类:JPanel实现接口:无public class ChessBoardPanel extends JPanel/完成五子棋的主要功能5 主要界面6 使用说明点击开始游戏 便可在棋盘进行游戏 如其中一方获胜 游戏会自动弹出结果 若想继续游戏 便可再次点击开始游戏 如退出游戏 点击“退出” 再选定“是”便可退出游戏 途中若有一方。

5、认输 点击认输按钮即可附件(程序清单)ChessBoardFrame类import java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.JFrame;public class ChessBoardFrame extends JFrame public ChessBoardFrame() / 设置标题this.setTitle(五子棋);int width = 500;int height = 456;/ 窗口起点坐标Toolkit kit = Toolkit.getDefault。

6、Toolkit();Dimension dimension = kit.getScreenSize();double screenWidth = dimension.getWidth();double screenHeight = dimension.getHeight();int x = (int) (screenWidth - width) / 2;int y = (int) (screenHeight - height) / 2;/ 设置窗口大小和位置this.setBounds(x, y, width, height);/ 设置窗口大小不可改变this.setResizable(fal。

7、se);/ 设置默认关闭选项this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);/ 将面板放于窗口中setBackground(Color.pink);this.add(new ChessBoardPanel();this.setVisible(true);public static void main(String args) new ChessBoardFrame();ChessBoardPanel类import java.awt.Color;import java.awt.Cursor;import java.awt.Graphi。

8、cs;import java.awt.Image;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JOptionPane;import javax.swing.JPanel;public class ChessBoardPanel exte。

9、nds JPanel / 保存棋子,1黑棋,-1白棋,0没有棋int arr = new int1919;/ 是否开始游戏boolean start;/ 棋子int chess = 1;public ChessBoardPanel() this.addMouseListener(ma);this.addMouseMotionListener(mma);MouseMotionAdapter mma = new MouseMotionAdapter() Overridepublic void mouseMoved(MouseEvent e) int x = e.getX();int y = e.g。

10、etY();if (x = 400 & x = 50 & y = 400 & x = 250 & y = 400 & x = 300 & y = 400 & x = 350 & y = 10 & x = 50 & y 10) i = i + 1;if (y - 50) % 20 10) j = j + 1;if (arrij = 0) arrij = chess;/ 判断输赢if (isWin(chess) = true) if (chess = 1) JOptionPane.showMessageDialog(null, 黑棋获胜); else JOptionPane.showMessage。

11、Dialog(null, 白棋获胜);start = false;/ 改棋子颜色chess = chess * (-1);/ 开始游戏if (x = 400 & x = 50 & y = 400 & x = 250 & y = 400 & x = 300 & y = 400 & x = 350 & y = 380) int option = JOptionPane.showConfirmDialog(null, 确定要退出吗?,对话框, JOptionPane.YES_NO_OPTION);if (option = 0) / 退出System.exit(0);Overridepublic vo。

12、id paint(Graphics g) super.paint(g);/画游戏开始外框g.drawLine(400, 50, 470, 50);g.drawLine(400, 80, 470, 80);g.drawLine(400, 50, 400, 80);g.drawLine(470, 50, 470, 80);/画认输外框g.drawLine(400, 250, 470, 250);g.drawLine(400, 280, 470, 280);g.drawLine(400, 250, 400, 280);g.drawLine(470, 250, 470, 280);/画关于外框g.dr。

13、awLine(400, 300, 470, 300);g.drawLine(400, 330, 470, 330);g.drawLine(400, 300, 400, 330);g.drawLine(470, 300, 470, 330);/画退出外框g.drawLine(400, 350, 470, 350);g.drawLine(400, 380, 470, 380);g.drawLine(400, 350, 400, 380);g.drawLine(470, 350, 470, 380);/鼠标事件框内文字g.drawString(游戏开始, 410, 70);g.drawString(。

14、认输, 420, 270);g.drawString(关于, 420, 320);g.drawString(退出, 420, 370);/ 绘制棋盘/ 横向for (int i = 0; i 19; i+) g.drawLine(10, 50 + i * 20, 370, 50 + i * 20);/ 纵向for (int i = 0; i 19; i+) g.drawLine(10 + i * 20, 50, 10 + i * 20, 410);for (int i = 0; i 19; i+) for (int j = 0; j 19; j+) if (arrij != 0) if (ar。

15、rij = 1) g.setColor(Color.BLACK);g.fillOval(3 + i * 20, 43 + j * 20, 14, 14);g.drawOval(3 + i * 20, 43 + j * 20, 14, 14); else g.setColor(Color.WHITE);g.fillOval(3 + i * 20, 43 + j * 20, 14, 14);g.setColor(Color.BLACK);g.drawOval(3 + i * 20, 43 + j * 20, 14, 14);/ 让窗口重绘this.repaint();/ 判断输赢/ 横向publi。

16、c boolean isH(int chess) for (int i = 0; i 19; i+) for (int j = 2; j 17; j+) if (arrij - 2 = chess & arrij - 1 = chess& arrij = chess & arrij + 1 = chess& arrij + 2 = chess) return true;return false;/ 纵向public boolean isV(int chess) for (int i = 2; i 17; i+) for (int j = 0; j 19; j+) if (arri - 2j =。

17、 chess & arri - 1j = chess& arrij = chess & arri + 1j = chess& arri + 2j = chess) return true;return false;/ 东南public boolean isEastSouth(int chess) for (int i = 2; i 17; i+) for (int j = 2; j 17; j+) if (arri - 2j - 2 = chess & arri - 1j - 1 = chess& arrij = chess & arri + 1j + 1 = chess& arri + 2j。

18、 + 2 = chess) return true;return false;/ 东北public boolean isEastNorth(int chess) for (int i = 2; i 17; i+) for (int j = 2; j 17; j+) if (arri - 2j + 2 = chess & arri - 1j + 1 = chess& arrij = chess & arri + 1j - 1 = chess& arri + 2j - 2 = chess) return true;return false;public boolean isWin(int chess) if (isH(chess) = true) | (isV(chess) = true)| (isEastSouth(chess) = true) | (isEastNorth(chess) = true) return true;return false。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
晓庄学院 《JAVA程序设计课程设计报告 "题 目: " 五子棋游戏的设计与实现 " "姓 名: "野 " "学 号: "12130818 " "班 级: "12软件工程转本2班 " "指导教师: "王峥 " "完成时间 "7月1日 " "成 绩: " " 信息工程学院 2015年6月 目录 1引言1 1.1系统开发背景2 1.1系统开发的目的和意义3 1.2完成的主要工作4 2需求分析和总体设计4 2.1需求分析与设计思路5 2.1.1关键技术说明5 2.1.2需求分析5 2.1.3系统设计方案与思路5 2.1.4系统目录结构说明5 2.2系统功能结构6 3详细设计7 3.1系统模块实现9 4系统运行结果10 5课程设计总结12 五子棋游戏的设计与实现 引言 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在"尧 造围棋"之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之 处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有"女娲造人 ,伏羲棋"一说,《增山海经》中记载:"休舆之山有石焉,名曰帝台之棋,五色而文 状鹑卵。"善注引三国淳《艺经》中曰:"棋局,纵横各十七道,合二百八十九道,白黑 棋子,各一百五十枚"。这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头 为棋子。因而规则简单的五子棋也可能出自当时,并是用石子作棋子。亦有传说,五 子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子后代中遍及开来。 1 系统开发背景 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为了人们日常生活中 的一部分,越来越多的人使用计算机办公、娱乐等等。在这其中,系统自带的小游戏 也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等 特点,非常适合人们在完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和 娱乐为目的,不仅给紧工作的人们以放松,还可以让人们的大脑得到开发。 2 完成的主要工作 设计一个15 15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择黑子先下 2.设置双方下棋总共时长 3.刷新重新开始 4.悔棋 5.认输 6.退出提示 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 1.3需求分析与设计思路 1. 用户需求调查分析 2. 构思代码模块 3. 总体设计 4. 详细设计 5. 代码编写 2需求分析和总体设计 1. 2. 4 需求分析与设计思路 此系统为智力游戏,采用JAVA的MVC模式,根据不同功能划分不同模块,该五子棋 游戏功能虽然简单,然是实现了人机对战,所以从这个角度来说,此款游戏能准确的 计算棋局。虽然系统不大,但是可以实现基本的五子棋功能,以及悔棋。 2.1.2需求分析 五子棋,是一种两人对弈的纯策略型棋类游戏,亦称"串珠"、"连五子";是中国 民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历 史还要悠久。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在 炎黄子后代中遍及开来。 五子棋发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜; 不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 2.1.3设计方案与思路 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为15X15,棋子放置于棋 盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以 上同色棋子连成不间断的一排者为胜。因为传统五子棋在落子后不能移动或拿掉,所 以也可以用纸和笔来进行游戏。 2.1.4系统目录结构说明 对系统包结构、文件结构列表说明,如表2-1、2-2所示。 表2-1主页面表 "包名 "作用 " "src "容纳所有文件 " 表2-2文件表 "文件名 "作用 " "Game.java "运行文件 " "GameFrame.java " " "Cheerup.java " " "PaintPanel.java " " 5 系统功能结构 3.1详细设计 1. 系统模块实现 "按钮 "事件 " "悔棋事件 "class Back implements ActionListener " "认输事件 "class Fail extends JFrame implementsActionListener" "关于事件 "class About extends JFrame implements " " "ActionListener " "设置事件 "class Set implements ActionListener " "退出事件 "classExite

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值