基于java程序的五子棋游戏设计 开题报告
基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实现五子棋是一种双人对弈的棋类游戏,也是一种非常经典的游戏类型。
设计一个基于JAVA的五子棋游戏系统,需要考虑到以下几个方面:游戏规则、游戏界面和游戏功能的实现。
一、游戏规则的设计:五子棋的规则非常简单,双方轮流下棋,先连成五子的一方为胜。
游戏区域是一个15x15的棋盘,棋盘上有黑白两种棋子。
玩家可以通过点击棋盘的不同位置来下棋。
二、游戏界面的设计与实现:1. 创建一个游戏主界面,并在界面上绘制棋盘。
可以使用JAVA Swing来创建界面,并使用Graphics类来实现绘制棋盘的功能。
2.在棋盘上绘制出15x15的格子,并设置鼠标点击事件,以便玩家可以通过点击棋盘的不同位置来下棋。
3. 在玩家下棋后,使用Graphics类来在棋盘上绘制出对应的棋子。
可以使用不同的颜色来区分黑白两种棋子。
三、游戏功能的实现:1.实现轮流下棋的功能。
通过一个变量来记录当前轮到哪个玩家下棋,玩家可以通过鼠标点击事件来确定落子的位置。
2.实现判断胜负的功能。
在每次下棋后,判断是否已经有五子连线的情况出现。
可以使用一个二维数组来保存棋盘上每个位置的棋子情况,并根据棋子位置来判断是否满足胜利条件。
3.实现悔棋功能。
当玩家点击悔棋按钮时,可以将最后一步下的棋子清除,并将轮到下棋的玩家切换至上一步下棋的玩家。
4.实现重新开始的功能。
当游戏结束后,可以通过点击重新开始按钮来重新开始游戏。
以上是一个基于JAVA的五子棋游戏系统的设计与实现的简要思路。
在实际的开发过程中,还需要考虑到异常处理、界面美化、多人对战等更多的细节。
希望以上内容能够帮助您完成五子棋游戏系统的设计与实现。
java五子棋游戏的设计与实现毕业设计开题报告

毕业设计开题报告班级:学号:姓名:学院:软件学院专业:软件工程(软件开发与测试方向)设计题目:javaGUI实现五子棋游戏指导教师:2014年2月28日开题报告填写要求1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。
此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效;2.开题报告内容必须用按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见;3.学生写文献综述的参考文献应不少于15篇(不包括辞典、手册)。
文中应用参考文献处应标出文献序号,文后“参考文献”的书写,应按照国标GB 7714—87《文后参考文献著录规则》的要求书写,不能有随意性;4.学生的“学号”要写全号(如020*******,为10位数),不能只写最后2位或1位数字;5. 有关年月日等日期的填写,应当按照国标GB/T 7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。
如“2004年3月15日”或“2004-03-15”;6. 指导教师意见和所在专业意见用黑墨水笔工整书写,不得随便涂改或潦草书写。
毕业设计开题报告1.结合毕业设计课题情况,根据所查阅的文献资料,撰写2000字左右的文献综述:文献综述一、选题的目的和意义:随着IT技术的发展,很多日常生活中的游戏都被搬到了计算机里供大众娱乐,尤其是博弈类的棋类游戏,如中国象棋,围棋,五子棋等,近年来人们对人工智能技术的研究成果更使得计算机在这些博弈游戏中能战胜很多玩家。
五子棋是起源于中国古代的传统黑白棋种之一。
现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
基于JAVA的五子棋游戏设计

基于JAVA的五子棋游戏设计五子棋是一种非常有趣的棋类游戏,主要目标是在棋盘上先形成五个连续的子的一方取胜。
为了设计一款基于JAVA的五子棋游戏,我们需要考虑以下几个方面:1.游戏界面设计:游戏界面需要包括一个棋盘和一些控制按钮。
可以使用Java GUI库(如Swing或JavaFX)来创建游戏界面,使用布局管理器来放置棋盘和按钮。
2.游戏规则设计:游戏规则非常简单。
两位玩家交替下棋,玩家可以在棋盘上的任意空闲位置下子。
首先形成五个连续的子的一方获胜。
可以使用二维数组来表示棋盘的状态,并在每次下子后更新数组的值。
3.游戏逻辑设计:游戏逻辑包括判断玩家下子的合法性、判断游戏是否结束以及判断获胜方等。
可以使用条件语句和循环结构来实现游戏逻辑。
下面是一种可能的五子棋游戏设计方案:```javaimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class GomokuGame extends JFrameprivate final int BOARD_SIZE = 15;private JButton[][] buttons;private int[][] board;private int currentPlayer;public GomokuGamsetTitle("Gomoku Game");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(600, 600);setLayout(new GridLayout(BOARD_SIZE, BOARD_SIZE));buttons = new JButton[BOARD_SIZE][BOARD_SIZE];board = new int[BOARD_SIZE][BOARD_SIZE];currentPlayer = 1;for (int i = 0; i < BOARD_SIZE; i++)for (int j = 0; j < BOARD_SIZE; j++)buttons[i][j] = new JButton(;buttons[i][j].setBackground(Color.WHITE);buttons[i][j].addActionListener(new ButtonListener(i, j));add(buttons[i][j]);}}setVisible(true);}private class ButtonListener implements ActionListener private int row;private int col;public ButtonListener(int row, int col)this.row = row;this.col = col;}public void actionPerformed(ActionEvent e)if (buttons[row][col].getBackground( == Color.WHITE)buttons[row][col].setBackground(currentPlayer == 1 ? Color.BLACK : Color.WHITE);board[row][col] = currentPlayer;if (isWinningMove(row, col))JOptionPane.showMessageDialog(null, "Player " + currentPlayer + " wins!");System.exit(0);}currentPlayer = currentPlayer == 1 ? 2 : 1;} elseJOptionPane.showMessageDialog(null, "Invalid move!");}}}private boolean isWinningMove(int row, int col)// Check horizontalint count = 0;for (int i = row - 4; i <= row + 4; i++)if (i >= 0 && i < BOARD_SIZE && board[i][col] == currentPlayer)count++;if (count >= 5)return true;}} elsecount = 0;}}// Check verticalcount = 0;for (int j = col - 4; j <= col + 4; j++)if (j >= 0 && j < BOARD_SIZE && board[row][j] == currentPlayer)count++;if (count >= 5)return true;}} elsecount = 0;}}// Check diagonal1count = 0;for (int i = row - 4, j = col - 4; i <= row + 4 && j <= col + 4; i++, j++)if (i >= 0 && i < BOARD_SIZE && j >= 0 && j < BOARD_SIZE && board[i][j] == currentPlayer)count++;if (count >= 5)return true;}} elsecount = 0;}}// Check diagonal2count = 0;for (int i = row - 4, j = col + 4; i <= row + 4 && j >= col - 4; i++, j--)if (i >= 0 && i < BOARD_SIZE && j >= 0 && j < BOARD_SIZE && board[i][j] == currentPlayer)count++;if (count >= 5)return true;}} elsecount = 0;}}return false;}public static void main(String[] args)new GomokuGame(;}```以上是一种简单的基于JAVA的五子棋游戏设计方案,游戏界面使用了JFrame和JButton来创建,游戏逻辑通过按钮的点击事件来实现。
java课程设计报告_五子棋

目录第一章软件平台……………………………游戏设计思路…………………………第二章小游戏五子棋的开发过程………………第一节JAVA基础知识………………………第二节启动程序的分析……………………第三节游戏设计过程………………………第三章总结…………………………………………第四章参考文献……………………………………第五章附录…………………………………………第一章游戏设计思路:第二章第一节java程序基础知识本系统有4个程序每个程序都导入了不同的包和类运用了不同的所学知识。
不同的类和包提供的方法、类型等都不同,本程序还使用了继承。
以至使其能够完成不同的功能。
本节主要讲述本系统所使用的基础知识。
1、类的基础<1、类的定义JAVA中的类实质上是一种对象类型,它是对具有相同属性和相同行为对象的一种抽象。
类是java程序中最小的组成单位。
<2、Java中类定义的格式为:[类修饰符] class 类名[extends 基类] [implements 接口]{// 成员变量声明(Member variable declaration)// 成员方法声明(Member method declaration)}其中,class、extends和implements都是Java的关键字。
类修饰符、extends和implements是关于修饰符、继承和接口的内容。
2、继承继承性是面向对象程序设计语言的一个重要特征,通过继承可以实现代码的复用。
Java语言中,所有的类都是直接或间接的继承ng.object类而得到的。
被继承的类称为基类或父类,继承而的来的类成为子类。
子类继承基类的方法和属性,同时也可以修改基类的方法和属性,并增加自己新的属性和方法。
Java不支持多重继承。
即一个子类不能拥有两个或以上的父类。
3、包<1、包的定义在Java中,把相关的代码组织到一起,称为“包”。
包市一种将相关类、接口或其他包组织起来的集合体,目的是为了将包含类代码的文件组织起来,易于查找和使用。
java五子棋课程设计报告总结

课程设计报告:Java五子棋1. 背景五子棋是一种两人对弈的策略棋类游戏,它的目标是在一个棋盘上先将自己的五个棋子连成一条线,可以是横线、竖线、斜线等。
五子棋具有简单规则、易于上手、趣味性强等特点,因此在各个年龄段都备受欢迎。
本次课程设计旨在使用Java语言实现一个简单的五子棋游戏,并通过该项目来提高学生对面向对象编程和图形用户界面开发的理解和实践能力。
2. 分析2.1 需求分析根据五子棋游戏的规则,我们需要实现以下功能:•创建一个可视化的游戏界面,包括棋盘和落子提示•实现落子操作,玩家可以通过点击鼠标来在合法位置落下自己的棋子•判断胜负条件,当任意一方连成五个棋子时,游戏结束并宣布胜利者•提供重新开始和退出游戏的选项2.2 设计思路为了实现上述功能,我们将采取以下设计思路:•使用Java Swing库来创建游戏界面,包括棋盘和落子提示•使用二维数组来表示棋盘,并通过判断数组中的元素来确定当前位置是否已经有棋子•使用鼠标事件监听器来实现玩家的落子操作•使用算法判断胜负条件,例如遍历棋盘判断是否有五个连续的棋子•使用菜单栏和对话框来实现重新开始和退出游戏的选项3. 实现3.1 游戏界面设计我们将使用Java Swing库来创建游戏界面。
首先,我们需要创建一个主窗口,并设置其大小、标题和布局。
然后,在主窗口上添加一个棋盘面板和一个状态栏面板。
在棋盘面板上,我们使用GridLayout布局将其分割为15行15列的格子。
每个格子可以是一个按钮,用于玩家落子操作。
同时,我们还需要在每个格子上显示当前位置是否已经有棋子。
在状态栏面板上,我们将显示当前玩家的提示信息(轮到哪一方落子)以及胜利者信息(如果有)。
3.2 落子操作实现为了实现玩家的落子操作,我们需要使用鼠标事件监听器。
当玩家点击某个格子时,程序会捕捉到鼠标点击事件,并根据当前玩家的身份在对应的位置上落下棋子。
为了判断当前位置是否已经有棋子,我们可以使用一个二维数组来表示棋盘。
基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实现五子棋是一种非常有趣的棋类游戏,本文将基于JAVA语言对五子棋游戏系统进行设计与实现。
1.系统需求分析首先,我们需要对五子棋游戏系统的需求进行分析。
五子棋游戏的基本规则是:两名玩家轮流落子,先连成五子的一方获胜。
游戏棋盘是一个15*15的方格,玩家可以在空白的方格上落子,每次只能落一个子。
2.系统设计基于需求分析,我们将五子棋游戏系统分为四个模块:游戏界面、游戏规则、游戏控制和游戏存储。
游戏界面模块:该模块负责游戏的显示和用户交互。
我们可以使用图形用户界面(GUI)来实现游戏界面,可以使用JAVA的Swing或JavaFX来进行界面设计。
游戏规则模块:该模块负责规定游戏的规则和判断胜负。
该模块主要包括判断是否有玩家连成五子和判断当前位置是否可以落子等方法。
游戏控制模块:该模块负责控制游戏的流程,包括轮流落子、判断胜负、判断平局等。
该模块需要和游戏规则模块进行交互。
游戏存储模块:该模块负责保存游戏的进度和记录,可以使用文件系统或数据库来进行存储。
3.系统实现接下来,我们开始实现五子棋游戏系统。
1)游戏界面模块:可以使用JavaFX实现游戏界面,包括棋盘的绘制、玩家落子的交互等。
2)游戏规则模块:实现判断是否有玩家连成五子的方法,以及判断当前位置是否可以落子的方法。
3)游戏控制模块:实现游戏的流程控制,包括轮流落子、判断胜负、判断平局等。
4)游戏存储模块:实现游戏进度和记录的保存,可以使用文件系统或数据库进行存储。
4.系统测试与优化完成系统实现后,我们需要对系统进行测试和优化。
可以通过对游戏进行多次测试,检查游戏的各个模块是否正常工作,并根据测试结果对系统进行优化。
5.系统部署与使用完成测试和优化后,我们可以将游戏系统进行部署,供用户使用。
总结:通过以上设计与实现,我们成功地基于Java语言实现了一个五子棋游戏系统。
该系统不仅具备了基本的游戏功能,还具备了用户友好的界面和存储功能。
Java五子棋课程设计报告程序

Java五子棋课程设计报告程序----------------------------------EXCE.JAVA--------------------------------------------- importjavax.swing.*;importjava.awt.*;importjava.awt.geom.*;public class Exce{public static void main(String args[]){JFrame win=new JFrame();JMenuBarmenubar;JMenu menu;JMenuItem item2,item1,item3;menubar=new JMenuBar();menu=new JMenu("菜单");item1=new JMenuItem("开始");item2=new JMenuItem("重新开始");item3=new JMenuItem("结束");menu.add(item1);menu.add(item2);menu.add(item3);menubar.add(menu);win.setJMenuBar(menubar);win.setTitle("五子棋");win.setSize(700,750);//win.setBackground(Color.orange);win.add(new Wuziqi());win.setVisible(true);win.setResizable(false);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}------------------------ WUZHIQI.JAVA------------------------ importjavax.swing.*;importjava.awt.*;importjava.awt.geom.*;public class Wuziqi extends JPanel{//棋盘距离边界的距离public static int x=50, y=50;//棋子的多少及格子大小public static int n=16, fangge=40,qizi=40;public static int s[][]=new int[n][n];//初始数组,数组全赋为0public void chushi(){for(inti=0;i<n;i++)< p="">{for(int j=0;j<n;j++)< p="">{s[i][j]=0;}}}//绘制棋盘public void paint(Graphics g){//调用父类的方法,清空棋盘super.paint(g);WuziqiListener listen= new WuziqiListener();listen.setWuziqiQP(this);//添加鼠标事件listen.setWuziqiG(g);this.addMouseListener(listen);this.addMouseListener(listen);Graphics2D g_2d=(Graphics2D)g;for(inti=0;i<n;i++)< p="">{Line2D line=new Line2D.Double(x+i*fangge,y,x+i*fangge,y+(n-1)*fangge);g_2d.draw(line);}for(inti=0;i<n;i++)< p="">{Line2D line=new Line2D.Double(x,y+i*fangge,x+(n-1)*fangge,y+i*fangge);g_2d.draw(line);} //画棋子for(inti=0;i<n;i++)< p="">{for(int j=0;j<n;j++)< p="">{if(s[i][j]==1){//黑棋子g.setColor(Color.BLACK);Ellipse2D ellipse=new Ellipse2D.Double(x+i*Wuziqi.fangge-Wuziqi.fangge/2,y+j*Wuziqi.fangge-Wuziqi.fangge/2, Wuziqi.qizi,Wuziqi.qizi);g_2d.fill(ellipse);}else if(s[i][j]==-1){//将颜色改为白色g.setColor(Color.WHITE);Ellipse2D ellipse=new Ellipse2D.Double(x+i*Wuziqi.fangge-Wuziqi.fangge/2,y+j*Wuziqi.fangge-Wuziqi.fangge/2 ,Wuziqi.qizi,Wuziqi.qizi);g_2d.fill(ellipse);}}}}//判断输赢public booleanisWin(intx,inty,int t){inti,j,count;//白棋或黑棋相连的个数//判断x负方向for(i=0,count=0;x-i>=0&&i<5;i++){if(t==s[x-i][y]){count++;}else{break;}if(count==5) //return true;}for(i=0,count=0;x+i<16&&i<5;i++) {if(t==s[x+i][y]){count++;}else{break;}if(count==5)return true;}//判断y方向for(i=0,count=0;y-i>=0&&i<5;i++) {if(t==s[x][y-i]){count++;}else{break;}if(count==5)return true;}for(i=0,count=0;y+i<16&&i<5;i++) {if(t==s[x][y+i]){count++;}else{break;}if(count==5)return true;}//判断左下方向for(i=0,count=0;x-i>=0&&y-i>=0&&i<5;i++) {if(t==s[x-i][y-i]){count++;}else{break;}if(count==5)return true;}for(i=0,count=0;x+i<16&&y+i<16&&i<5;i++) {if(t==s[x+i][y+i]){count++;}else{break;}if(count==5)return true;}}//判断右上方向for(i=0,count=0;x+i<16&&y-i>=0&&i<5;i++) {if(t==s[x+i][y-i]){count++;}else{count=0;}if(count==5)return true;}for(i=0,count=0;x-i>0&&y+i<16&&i<5;i++) {if(t==s[x-i][y+i]){count++;}else{break;}if(count==5){return true;}return false;}}---------------------------------------------WuziqiListener.JAVA--------------------------------------------------- importjava.awt.Graphics;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjava.awt.*;importjavax.swing.*;//棋盘鼠标监视器public class WuziqiListener implements MouseListener{Wuziqiwzq;Graphics g;//用来确定下什么棋public static int t=1;public void setWuziqiQP(Wuziqiwzq){this.wzq=wzq;}public void setWuziqiG(Graphics g){this.g=g;}public void mousePressed(MouseEvent e){//利用四舍五入,获得要下的棋子的行和列int x1=(int)((double)(e.getX()-Wuziqi.x)/Wuziqi.fangge+0.5);int y1=(int)((double)(e.getY()-Wuziqi.y)/Wuziqi.fangge+0.5);//判断是否越界,及是否放了棋子while(x1>=0&&x1<wuziqi.n&&y1>=0&&y1<wuziqi.n&&w uziqi.s[x1][y1]==0)< p="">{//wzq.repaint();//wzq.paint(g);//棋子放在棋盘上后,数组做相应标示Wuziqi.s[x1][y1] = t;//调用iswin方法,来判断输赢if((wzq.isWin(x1,y1,t))&&t==1){ //弹出提示对话框int n=JOptionPane.showConfirmDialog(null,"黑棋赢了,再来一盘吧!", "确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);if(n==JOptionPane.YES_OPTION){wzq.chushi();Wuziqi.s[x1][y1]=-2;wzq.repaint();}else if(n==JOptionPane.NO_OPTION){System.exit(0);}}else if((wzq.isWin(x1,y1,t))&&t==-1){int n=JOptionPane.showConfirmDialog(null,"白棋赢了,再来一盘吧!", "确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);if(n==JOptionPane.YES_OPTION){wzq.chushi();Wuziqi.s[x1][y1]=-2;wzq.repaint();}else if(n==JOptionPane.NO_OPTION){System.exit(0);}}else{ //重新棋盘wzq.repaint();t = -t;}}}public void mouseClicked(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}}</wuziqi.n&&wuziqi.s[x1][y1]==0)<></wuziqi.n&&y1> </n;j++)<></n;i++)<></n;i++)<></n;i++)<></n;j++)<></n;i++)<>。
java五子棋报告

五子棋一、程序功能介绍设计一个20*20的五子棋盘,由两个玩家交替下子,并且可以实现以下功能:1.鼠标点击横竖线交汇处落子2.通过落子使得五个黑子或者五个白子在一条横线、竖线或斜线上2.重新开始按钮刷新重新开始3. 检查是否实现了五子连珠4. 有一方五子连珠时提示结果5.结束按钮结束程序二、课程设计过程1.如图一:程序流程图2.程序功能设计(1)先写draw类,在类中先画出一个Jframe窗口体,在这个窗口体上增加重新开始,退出,和主棋盘按钮。
并且设置监听按钮的监听。
并在draw类中设置主函数启动程序。
(2)fivechess类实现程序的功能,定义wh_array二维数组表示棋盘。
定义wh_arr一维数组,将wh_array值通过从上往下转换成一维,可用于判断输赢。
定义paintComponent(Graphics g)绘图函数,将整个棋盘给画出。
3.程序中用的变量、方法、类等class fivechess extends JPanel{} //定义变量,落子监听,判断输赢int[][] wh_array = new int[20][20]; // 定义二维数组,表示棋子在棋盘的位置int[] wh_arr = new int[430]; // 定义一维数组,转换二维数组,判断是否连线public void mouseClicked(MouseEvent e) // 单击鼠标落子并且判断输赢public fivechess() {} // 鼠标操作protected void paintComponent(Graphics g) // 绘图函数public Dimension getPerferredSize() //返回期盼大小public class draw extends JFrame {} //添加按钮,设置监听,启动程序public draw() //绘制窗口,增加重新开始和退出按钮b.addActionListener() //重新开始按钮设置监听exit. addActionListener()//退出按钮设置监听public static void main(String args[]){}//主函数启动程序三、程序设计的完整代码及注解//双人对战五子棋import java.awt.*;import java.awt.event.*;import javax.swing.*;class fivechess extends JPanel { // 函数int wh_color, x1, y1, wh_x, wh_y, wh_i, wh_j, wh_arri, wh_stop = 3;// 定义各种整型变量//x1,y1表示坐标wh_x,wh_y圆大小坐标wh_i,wh_j二维数组boolean wh_rf; // 定义布尔型变量,判断玩家String s;int[][] wh_array = new int[20][20]; // 定义二维数组int[] wh_arr = new int[430]; // 定义一维数组public fivechess() { // 鼠标操作for (int i = 0; i < 20; i++) { // 给二维数组赋值为0for (int j = 0; j < 20; j++) {wh_array[i][j] = 0; // 赋值为0}}for (int i = 0; i < 400; i++) { // 给一维数组赋初始值0wh_arr[i] = 0;}addMouseListener(new MouseListener() { // 鼠标监听器public void mouseClicked(MouseEvent e) // 单击鼠标{Graphics g = getGraphics();if (wh_stop == 3) // 当wh_stop==3时运行程序{x1 = e.getX(); // 返回鼠标当前x坐标y1 = e.getY(); // 返回鼠标当前y坐标wh_i = (x1 - 54) / 32; // 计算列值wh_j = (y1 - 34) / 32; // 计算行值wh_arri = 20 * wh_j + wh_i; // 计算二维数组变为一维数组时的对应值if (x1 > 54 && x1 < 694 && y1 > 34 && y1 < 674) // 在棋盘范围内单击鼠标才运行程序{if (wh_array[wh_i][wh_j] == 0) // 当二维数组取值为0时运行程序{wh_rf = !wh_rf; // Boolean值单击后循环变化if (wh_rf == true) // Boolean值为TRUE时{wh_color = 1; // 令wh_color=1s = "黑棋";wh_array[wh_i][wh_j] = 1; // 对应的二维数组值赋为1wh_arr[wh_arri] = 1; // 对应的一维数组赋值为1}if (wh_rf == false) // Boolean值为FALSE时{wh_color = 2; // wh_color为2s = "白棋";wh_array[wh_i][wh_j] = 2; // 对应的二维数组值赋为2wh_arr[wh_arri] = 2; // 对应的一维数组值赋为2}for (int i = 0; i < 20; i++) // 确定鼠标位置的范围{for (int j = 0; j < 20; j++) {if (x1 >= 54 + i * 32&& x1 < 54 + (i + 1) * 32&& y1 >= 34 + j * 32&& y1 < 34 + (j + 1) * 32)// 鼠标在此范围内时{wh_x = 54 + (i) * 32 + 1; // 取这个小方格的左上角x坐标值+1wh_y = 34 + (j) * 32 + 1; // 取这个小方格的左上角y坐标值+1}}}if (wh_color == 1) // 当棋子为黑色时{g.setColor(Color.BLACK); // 设置颜色}if (wh_color == 2) // 如果棋子为白色{g.setColor(Color.WHITE); // 设置颜色}g.fillOval(wh_x, wh_y, 30, 30); // 在这个小方格范围内画圆形}}for (int i = 0; i < 395; i++) // 判断黑白双方谁胜利{g.setColor(Color.RED);if ((wh_arr[i] == 1 && wh_arr[i + 1] == 1&& wh_arr[i + 2] == 1 && wh_arr[i + 3] == 1&& wh_arr[i + 4] == 1 && (i + 4) / 20 == i / 20)|| // 判断横行黑子连续为5个(wh_arr[i] == 1 && wh_arr[i + 20] == 1&& wh_arr[i + 40] == 1&& wh_arr[i + 60] == 1&& wh_arr[i + 80] == 1 && (i + 4) / 20 == i / 20)|| // 判断竖行黑子连续为5个(wh_arr[i] == 1 && wh_arr[i + 19] == 1&& wh_arr[i + 2 * 19] == 1&& wh_arr[i + 3 * 19] == 1&& wh_arr[i + 4 * 19] == 1 && (i - 4) / 20 == i / 20)|| // 判断斜左黑子连续为5个(wh_arr[i] == 1 && wh_arr[i + 21] == 1&& wh_arr[i + 2 * 21] == 1&& wh_arr[i + 3 * 21] == 1 && wh_arr[i + 4 * 21] == 1)) // 判断斜右黑子连续为5个{g.drawString("黑棋胜利", 300, 300); // 显示黑棋胜利wh_stop = 0; // 当胜利时赋值为0,再次运行时将停止}if ((wh_arr[i] == 2 && wh_arr[i + 1] == 2&& // 判断白棋子wh_arr[i + 2] == 2 && wh_arr[i + 3] == 2&& wh_arr[i + 4] == 2 && (i + 4) / 20 == i / 20)|| // 判断横行白子连续为5个(wh_arr[i] == 2 && wh_arr[i + 20] == 2&& wh_arr[i + 40] == 2&& wh_arr[i + 60] == 2&& wh_arr[i + 80] == 2 && (i + 4) / 20 == i / 20)|| // 判断竖行白子连续为5个(wh_arr[i] == 2 && wh_arr[i + 19] == 2&& wh_arr[i + 2 * 19] == 2&& wh_arr[i + 3 * 19] == 2&& wh_arr[i + 4 * 19] == 2 && (i - 4) / 20 == i / 20)|| // 判断斜左白子连续为5个(wh_arr[i] == 2 && wh_arr[i + 21] == 2&& wh_arr[i + 2 * 21] == 2&& wh_arr[i + 3 * 21] == 2 && wh_arr[i + 4 * 21] == 2)) // 判断斜行连续5子{g.drawString("白棋胜利", 300, 300);wh_stop = 0;}}}} // 单击事件结束public void mouseEntered(MouseEvent e) // 鼠标进入组件的事件{}public void mouseExited(MouseEvent e) // 鼠标离开组件的事件{}public void mousePressed(MouseEvent e) // 鼠标按下时的事件{}public void mouseReleased(MouseEvent e) // 鼠标放开时的事件{}}); // 监听器结束addMouseMotionListener(new MouseMotionListener() // 鼠标motion监听{public void mouseMoved(MouseEvent e) // 处理鼠标移动事件{}public void mouseDragged(MouseEvent e) // 处理鼠标拖动事件{}});}protected void paintComponent(Graphics g) // 绘图函数{g.setColor(Color.gray);g.fill3DRect(0, 0, 748, 728, true);g.setColor(Color.BLACK); // 设置颜色for (int i = 0; i < 20; i++) // 循环画棋盘{g.drawLine(70, 50 + i * 32, 678, 50 + i * 32); // 画棋盘的横线g.drawLine(70 + i * 32, 50, 70 + i * 32, 658); // 画棋盘的纵线}g.drawString("五子棋", 300, 30); // 在面板上输出"五子棋"wh_stop = 3; // 刷新后wh_stop由0变为3可以响应buttonfor (int i = 0; i < 20; i++) // 给二维数组赋值为0{for (int j = 0; j < 20; j++) {wh_array[i][j] = 0; // 赋值为0}}for (int i = 0; i < 400; i++) { // 给一维数组赋初始值0 wh_arr[i] = 0;}}public Dimension getPerferredSize() {return new Dimension(748, 728);}}public class draw extends JFrame { // 函数JTextField t;public draw() //{super("五子棋"); // 窗口名Container c = getContentPane(); // 返回当前内容窗值c.setLayout(null);fivechess wh = new fivechess();wh.setBounds(0, 0, 748, 728); // 设置panel大小JButton b = new JButton("重新开始"); // 定义按钮JButton exit = new JButton("退出"); // 定义按钮c.add(exit);c.add(b); // 添加按钮c.add(wh); // 添加panelb.setBounds(70, 20, 100, 20); // 设置按钮大小exit.setBounds(580, 20, 80, 20);b.addActionListener(new ActionListener() // 设置监听{public void actionPerformed(ActionEvent e) {repaint(); // 重画}});exit.addActionListener(new ActionListener() // 设置监听{public void actionPerformed(ActionEvent e) {System.exit(0);}});}public static void main(String args[]) // 主函数{draw app = new draw(); //app.setLocation(300, 0); // 设置窗口位置app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭框架行为属性app.setSize(748, 728); // 设置面板框架frame大小app.setVisible(true); // 设置可见app.setResizable(false);}}四、程序运行的结果分析1.如图二:进入游戏界面2.如图三:落子图三落子3.如图四:结束游戏图四游戏结束五、课程设计总结通过短短的一个学期java的学习,我们从一个对JAVA编程不懂的学生到现在可以试着用JAVA 进行简单程序的设计和编写,也更加了解了面向对象的思想。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[14] 聂庆亮.Java应用开发指南[M].清华大学出版社,2010,1.
[15]杜江编著.Java2实用教程[M].电子工业出版社,2006,3.
[16]孙更新,宾晟,吕婕编著.Java毕业设计指南与项目实践[M].科学出版社,2008.
6.利用线程类的方法实现双方在时间上的轮流;
7.对完成之后的游戏程序进行调试
研究中可能遇到的问题
1.对五子棋的操作界面设计不太完整;
2.处理双方的落子时间不太准确;
3.游戏双方的先后顺序的设置;
4.对Eclipse工具运用不够熟练
解决方法和措施:
1.熟悉Eclipse工具的各个功能;
2.加强对JAVA语言的熟悉和运用;
[9] 林飞.中国艺术经典全书之五子棋[M].吉林摄影出版社,2003,12.
[10] 彭建国,那威.连珠五子棋入门[M].金盾出版社.1997,6.
[11] 朱福喜.Java语言基础教程[M].清华大学出版社,2008,4.
[12] (美)卡拉诺(Carranu).数据抽象和问题求解Java [M].清华大学出版社,2007,5.
[17]郑人杰编著.实用软件工程[M].清华大学出版社,2000.
[18]张海藩编著.软件工程导论[M].清华大学出版社,2008.
[19]李春葆,苏光奎编著.数据结构与算法教程[M].清华大学出版社,2005,6.
[20]孙卫琴编著.java网络编程精解[M].电子工业出版社,2007.
毕业设计进度安排
参考文献
[1] 丁振凡,章剑.java语言使用教程(第2版)[M].北京邮电大学出版社,2004,2.
[2] 黄晓东,java课程设计案例精编[M].中国水利水电出版社,2002,4.
[3] 李诚.肖占彪.java 2 简明教程[M].清华大学出版社,2004,8.
[4] 宁书林,许新龙.java 2 程序设计与技能自练[M],中国铁道出版社,2005,8.
毕业设计每周指导时间、地点安排及毕业设计纪律要求
文章主要采用Eclipse工具与java语言开发的五子棋小游戏,该游戏程序能够实现两个人对阵下棋,程序中能够自定义的设置双方对阵的游戏时间以及智能的判断游戏中哪方获得胜利及游戏的结束。
【关键词】java,五子棋,eclipse,智能
正文大纲
论文大纲
7.参考文献
前期的文献资料收集、调研、实习及设计条件准备情况
课题的意义:
随着社会经济的迅速发展,人们生活水平有了很大的提高,生活观念也发生了巨大的改变。高品质的生活以及现代化得生活方式成为人们共同追求的目标;休闲、娱乐性的活动作为时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为一种智力型娱乐项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的需求。而今,以网络技术为核心和计算机技术的现代网络科技已经在现实生活得到了十分广泛的使用。休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为大多数人群选择的休闲方式。五子棋是当前非常流行的一种棋类游戏,它在我国的历史可谓是源远流长,它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。以java为工具,以精美的界面,设计更为益智的单机版五子棋游戏,增强了趣味性和益智性。
3.反复调试确保程序的可行性和准确性;
4.多看相关方面的书籍和学术论文,联系指导老师,听从老师的指导与建议
论文大纲
基于JAVA程序的五子棋游戏设计
摘要
随着网络的不断进步,网络游戏逐渐成为人们生活中的一部分,它不仅能够使人娱乐和消遣,也能够开发人的智力,使大脑更加的灵活。本文所讲述的五子棋游戏通过双方的竞技,能够开发人们的才干和开发人们的智力。
陕西科技大学镐京学院毕业设计(论文)开题报告
课题的目的及意义
课题的目的:
java语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。本文利用java语言的强大功能来实现五子棋游戏的编写,通过对java语言的应用,提高了程序编写的能力和分析解应数据资料对论文主题进行大体分析;第第6周:写出论文的大体框架;
第7周:进行开题报告答辩;
第8~10周:对论文的主题进行详细深入的研究;
第11周:进行中期答辩;
第12~14周:继续完成论文工作,对资料进行详细的收集并完成实物制作;
第15周:进行毕业论文答辩及成果的展示。
课题的主要任务;研究可能遇到的问题以及解决的方法和措施
课题的主要任务:
1.熟悉Eclipse工具的主要功能以及JAVA语言的运用;
2.熟悉JAVA的开发环境、编辑环境以及运行环境;
3.进行游戏整体界面的设计;
4.对游戏程序进行深入的分析,明确系统的设计任务、功能要求等;
5.设计一个主体测试类和一个窗体类,实现了五子棋的各个功能;
[5] 胡书敏.java 设计模式-自动化与性能[M].清华大学出版社,2004,7.
[6] 何桥,李肃义.java 2程序设计简明教程[M].中国水利水电出版社,2004.
[7] 荣钦科技.java 2游戏设计[M].清华大学出版社,2004,11.
[8] 徐立,孙计安.java应用与开发案例教程[M].清华大学出版社,2005,7.