用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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值