java五子棋项目报告
时间:2025-04-22
时间:2025-04-22
java五子棋
《Java语言程序设计》课程设计报告
题 目:设 计 者:班 级:学 号:指导教师:系 部:专 业:
信息管理系 计算机应用技术
2011年 6 月 25 日
java五子棋
目 录
1、概论 ...................................................................... 错误!未定义书签。
2、总体设计 .................................................................... 错误!未定义书签。
3、详细设计 .................................................................... 错误!未定义书签。
4、实现 ........................................................................... 错误!未定义书签。
5、总结体会 ...................................................................错误!未定义书签。-
6、参考文献 .................................................................... 错误!未定义书签。
7、附录 ........................................................................... 错误!未定义书签。
java五子棋
1、概述
1.1问题分析
主要运用了GUI(用户图形界面)和API(应用程序借口)来实现。当然,Event监听器等也是这个程序的重要部分。程序没有用到图片的引用,棋盘和棋子的设计完全是应用坐标来绘制,再加入按钮、及实现本游戏的用户界面布局。
程序编写的思路来源于老师的视频资料,程序在编写过程中遇到的问题主要集中在前期的棋盘绘制和后期的棋子算法。
1.2功能
(1)程序在设计初就定义黑棋先行,白棋随后。从第一个棋子开始开始相互顺 序落子。
(2)通过坐标索引算出最先在棋盘的横向、竖向、斜向形成连续的相同色五棋子的一方为胜利。
(3)为保持界面洁净设为游戏界面设为固定。 (4)在游戏过程中或下完时可选择重新开始。 (5)赢家对话框提示。
(6)游戏实现了基本的单机功能但为实现人机对战和网路对战。
2、总体设计
主要包括的类有三个:ChessBoard、Point、StartChessJFrame 1、StartChessJFrame类
StartChessJFrame类是java版五子棋的主框架,程序的启动类。
其中包括游戏界面的创建、按钮的设置、相关的事件监听器设置、游戏的启动
2、ChessBoard类
ChessBoard类主要实现的是棋盘的绘制、创建数组存放棋子的坐标、设置只能在棋盘内可以落子、实现判断黑白棋的输赢、实现重新游戏。
3、Point类
Point类主要就是实现棋子的功能
java五子棋
3、详细设计
1、StartChessJFrame类
(1) public ChessBoard chessBoard; public JPanel toolbar;
public JButton startButton; public JButton exitButton;
//“重新开始”按钮和“退出”按钮 public StartChessJFrame(){
setTitle("云、凡、杰的五子棋"); chessBoard=new ChessBoard(); //创建面板对象
toolbar=new JPanel();//创建工具栏 startButton=new JButton("重新开始"); exitButton=new JButton("退出");
toolbar.setLayout(new FlowLayout(FlowLayout.LEFT)); //将工具面板按钮用边框布局 toolbar.add(startButton); toolbar.add(exitButton);
MyItemListener lis=new MyItemListener(); //创建事件监听器
startButton.addActionListener(lis); exitButton.addActionListener(lis); //将两个按钮注册监听事件
add(toolbar,BorderLayout.SOUTH); //将工具面板布局到下面 add(chessBoard);
//将面板对象添加到窗体上
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置界面关闭事件 pack();
//界面自适应大小 }
主要实现游戏界面的创建,按钮的添加、为按钮添加事件监听器、面板的添加。 (2)
public class MyItemListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Object jt=e.getSource(); //取得事件源
if(jt==startButton) {
chessBoard.restartGame();}
java五子棋
//调用重新开始
else if(jt==exitButton) {
System.exit(0);} //结束应用程序 }
实现的功能事件监听器内部类
(3)
public static void main(String[] args){
StartChessJFrame f=new StartChessJFrame(); f.setVisible(true); f.setResizable(false); }
实现的功能创建主框架,锁定窗体的大小,显示主框架 2、Point类
int x;
int y;
Color color;
public static final int DIAMETER = 30 ; public Point(int x,int y,Color color){ this.x=x; this.y=y;
this.color=color; }
public int getX(){ return x; }
public int getY(){ return y; }
public Color getColor(){ return color; }
实现的功能设定棋子直径大小,取得棋盘中的棋子的坐标 3. ChessBoard类 1.
public ChessBoard(){
setBackground(Color.GRAY); addMouseListener(this);
addMouseMotionListener(new MouseMotionListener(){ public void mouseDragged(MouseEvent e){ }
java五子棋
public void mouseMoved(MouseEvent e){
int x1=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN; int y1=(e.getY()-MARGIN+GRID_SPAN/2)/GRID_SPAN; } }); }
public void paintComponent(Graphics g){ super.paintComponent(g); for(int i=0;i<=ROWS;i++) {
//画横线
g.drawLine(MARGIN, MARGIN+i*GRID_SPAN, MARGIN+COLS*GRID_SPAN, MARGIN+i*GRID_SPAN); }
for(int i=0;i<=COLS;i++) {
//画竖线
g.drawLine( MARGIN+i*GRID_SPAN,MARGIN, MARGIN+i*GRID_SPAN,MARGIN+ROWS*GRID_SPAN); }