




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA程序设计实训报告课程名称:JAVA程序设计专业:计算机应用技术班 级:11计算机应用班小组成员:巨敏石丽涛张娅雯李延尚文学董丁喜周致远 指导老师:武文廷实训目的二. 实训题目和要求2.1实训题目描述122实训要求1三实训报告内容3.1 五子棋主框架 13.2棋盘、棋子及说明信息13.3 对弈算法相关问题设计1四实训中的部分代码2五五子棋源程序代码3六 . 总结 17一、实训目的本次实训,学生可以将理论知识与具体实践相结合,巩固对 JAVA 相关方法和概念的理解。通过实训单 机版五子棋游戏的编程,掌握 JAVA 语言编程的基础知识并能熟练运用,熟悉累声明与对象的使用,运用 JAVAswi
2、ng 编写单机版五子棋游戏,并实现其功能。通过本次实训,可以开拓思维,增强编程思想,为深 入学习 JAVA 打下良好的基础。二、实训题目描述和要求2.1 实训题目描述实训题目: JAVA 五子棋单机版游戏。描述:通过 JAVA 的 swing 组件,实现五子棋简单的双人对弈, 并通过内部条件判断实现输赢的双方的下棋过程。2.2 实训要求(1)五子棋游戏的主窗口也就是游戏界面的实现(2)棋子黑白色的设置及判定(3)完成判断某一横行是否练成五子及所有方向是否练成五子的功能(4)几个简单按钮的实现, “重新开始” “悔棋”“退出”按钮(5)菜单栏的实现, “重新开始”“悔棋”“退出”菜单项三、实训报
3、告内容3.1 主框架编写一个startCheesJFrame类,主要用来显行主窗体界面,包括工具条面板、菜单栏项。设置界面关闭 事件。并编写一个内部类 MyItemListener 来监听按钮和菜单栏的单机事件。3.2 棋盘、棋子(1) 编写point类,包括棋子的X/Y索引,颜色。定义构造函数和相应的get方法。(2)编写ChessBoard类,设置棋盘背景颜色为橘黄色(3)在主框架类中创建 ChessBoard对象,并添加到主框架中(4)编写mousePressed方法来进行绘制棋盘和棋子3.3 对弈算法相关问题设计(1)编写mousePressed方法的内容,预定义isBlack表示下的
4、是黑棋还是白棋。 PointCount表示当前棋子 的个数。(2)添加相应的判断:不能画到棋盘外,下过的地方不能再下(需要辅助方法find point)。(3) 添加胜利的判断iswin,添加标记变量 gameOver。在mousePressed方法的最前面调用加入 gameOver 的判断,在mousePressed方法的最后调用iswin,返回true则给出消息提示,gameOver设置为tuer。四、实训中的部分代码1. ChessBoard.javaPrivate ChessBoard chessboard;Private JPanel toolbar;Private JButton
5、shartButton;Private JButton backButton;Private JButton exiButton;2. point.javaPublic class pointPrivate int x;Private int y;Private color color;Public static final int DIAMETER=30;Public point lint x, int y, color colorThis. X=x;This.y=y;This . color=color;3. startChessJFrame.java Public startChess
6、JFrame() Set Title( “单机版五子棋 ”); chessboard=new chessboard(); menuBar=new JMenuBar(); sysMenu=new JMenu( “系统 ”); startMenuItem=new JMenuItem( “重新开始 ”); exitMenuItem=new JMenuItem( “退出 ”) ; backMenuItem=new JMenuItem( “悔棋 ”) ; sysMenu.add(startMenuItem);五、五子棋源程序代码 /StartChessFrame import javax.swing.*
7、;import java.awt.event.*; import java.awt.*;public class StartChessFrame extends JFrame private ChessBoard chessBoard;private JPanel toolbarprivate JButton startButton, backButton, exitButton;private JMenuBar menuBar;private JMenu sysMenu;private JMenuItem startMenuItem, exitMenuItem, backMenuItem;
8、public StartChessFrame() setTitle( 单机版五子棋 ); chessBoard = new ChessBoard(); menuBar = new JMenuBar(); sysMenu = new JMenu( 系统 );startMenuItem = new JMenuItem( 重新开始 ); exitMenuItem = new JMenuItem( 退出 ); backMenuItem = new JMenuItem( 悔棋 ); sysMenu.add(startMenuItem); sysMenu.add(backMenuItem); sysMen
9、u.add(exitMenuItem);MyItemListener lis = new MyItemListener(); this.startMenuItem.addActionListener(lis); backMenuItem.addActionListener(lis); exitMenuItem.addActionListener(lis); menuBar.add(sysMenu); setJMenuBar(menuBar);import java.awt.Color; public class Point private int x; private int y; priva
10、te 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;toolbar = new JPanel(); startButton = new JButton( 重新开始 ); backButton = ne
11、w JButton( 悔棋 ); exitButton = new JButton( 退出 ); toolbar.setLayout(new FlowLayout(FlowLayout.LEFT); toolbar.add(startButton); toolbar.add(backButton);toolbar.add(exitButton); startButton.addActionListener(lis); backButton.addActionListener(lis); exitButton.addActionListener(lis); add(toolbar, Border
12、Layout.SOUTH);add(chessBoard); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /setSize(800,800);pack();private class MyItemListener implements ActionListener public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = StartChessFrame.this.startMenuItem | obj = startButton)System
13、.out.println( 重新开始 .);chessBoard.restartGame(); else if (obj = exitMenuItem | obj = exitButton) System.exit(0); else if (obj = backMenuItem | obj = backButton) System.out.println( 悔棋 .); chessBoard.goback();public static void main(String args) StartChessFrame f = new StartChessFrame();f.setVisible(t
14、rue);/ChessBoardimport javax.swing.*;import java.awt.*;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.MouseEvent;public class ChessBoard extends JPanel implements MouseListener public static final int MARGIN = 30;public static final int GRID_SPAN
15、= 35;public static final int ROWS = 10;public static final int COLS = 10;Point chessList = new Point(ROWS + 1) * (COLS + 1);boolean isBlack = true;boolean gameOver = false;int chessCount;int xIndex, yIndex;public ChessBoard()setBackground(Color.ORANGE);addMouseListener(this);addMouseMotionListener(n
16、ew MouseMotionListener() public void mouseDragged(MouseEvent e) 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; if (x1 ROWS | y1 COLS | gameOver| findChess(x1, y1)setCursor(new Cursor(Cursor.DEFAU
17、LT_CURSOR); elsesetCursor(new Cursor(Cursor.HAND_CURSOR););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 * G
18、RID_SPAN, MARGIN, MARGIN + i * GRID_SPAN,MARGIN + ROWS * GRID_SPAN);for (int i = 0; i chessCount; i+) int xPos = chessListi.getX() * GRID_SPAN + MARGIN;int yPos = chessListi.getY() * GRID_SPAN + MARGIN; g.setColor(chessListi.getColor();g.fillOval(xPos - Point.DIAMETER / 2, yPos - Point.DIAMETER / 2,
19、 Point.DIAMETER, Point.DIAMETER);if (i = chessCount - 1) g.setColor(Color.red);g.drawRect(xPos - Point.DIAMETER / 2,yPos - Point.DIAMETER / 2, Point.DIAMETER, Point.DIAMETER);public void mousePressed(MouseEvent e) if (gameOver)return;String colorName = isBlack ? 黑棋 : 白棋xIndex = (e.getX() - MARGIN +
20、GRID_SPAN / 2) / GRID_SPAN; yIndex = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN; if (xIndex ROWS | yIndex COLS)return;if (findChess(xIndex, yIndex)return;Point ch = new Point(xIndex, yIndex, isBlack ? Color.black: Color.white); chessListchessCount+ = ch; repaint();if (isWin() String msg = Strin
21、g.format( 恭喜, %s 赢了! , colorName); JOptionPane.showMessageDialog(this, msg); gameOver = true;isBlack = !isBlack;public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseReleased(MouseEvent e) private boolean findChess(int x,
22、 int y) for (Point c : chessList) if (c != null & c.getX() = x & c.getY() = y) return true;return false;private boolean isWin() int continueCount = 1;for (int x = xIndex - 1; x = 0; x-) Color c = isBlack ? Color.black : Color.white;if (getChess(x, yIndex, c) != null) continueCount+; else break;for (
23、int x = xIndex + 1; x = 5) return true; elsecontinueCount = 1;for (int y = yIndex - 1; y = 0; y-) Color c = isBlack ? Color.black : Color.white;if (getChess(xIndex, y, c) != null) continueCount+; elsebreak;for (int y = yIndex + 1; y = 5) return true; elsecontinueCount = 1;for (int x = xIndex + 1, y
24、= yIndex - 1; y = 0 & x = COLS; x+, y-) Color c = isBlack ? Color.black : Color.white;if (getChess(x, y, c) != null) continueCount+; elsebreak;for (int x = xIndex - 1, y = yIndex + 1; y = 0; x-, y+) Color c = isBlack ? Color.black : Color.white;if (getChess(x, y, c) != null) continueCount+; elsebreak;if (continueCount = 5) return true; elsecontinueCount = 1; for (int x = xIndex - 1, y = yIndex - 1; y = 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北工业大学毕业答辩
- 2025年北京五十中中考数学模拟试卷(4月份)
- 口腔科学试题及答案解析
- 初级烹饪考试题库及答案
- 档案管理 笔试题及答案
- 检验员考试复习的最佳时间安排试题及答案
- 仓储知识考试题库及答案
- 卫生班会课件
- ai操作考试题库及答案
- 分布式光伏电站设计培训手册
- RoHS供应商环境稽核检查表
- 深圳鸿蒙复习测试题
- 2025年国家电投公开招聘管理单位笔试遴选500模拟题附带答案详解
- 中学理化生数字化实验室建设方案
- 土方车队运输居间合同范文
- 电工电子学知到智慧树章节测试课后答案2024年秋湖南大学
- 陕西延长石油集团有限责任公司行测笔试题库2024
- 【MOOC】计算机网络-南京农业大学 中国大学慕课MOOC答案
- 《预装式变电站》课件
- 北京工业大学《环境微生物学》2022-2023学年第一学期期末试卷
- 汽车修理工(技师)考试题库(含答案)
评论
0/150
提交评论