五子棋实训报告(电子版)范文_第1页
五子棋实训报告(电子版)范文_第2页
五子棋实训报告(电子版)范文_第3页
五子棋实训报告(电子版)范文_第4页
五子棋实训报告(电子版)范文_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA程序设计实训报告课程名称:JAVA程序设计专 业:计丁机应用技术班 级:11计簟:机应用班小组成员:巨敏石丽涛张娅雯李延 尚文学董丁喜周致远 指导老师:武文廷二 . 实训题目和要求2.1 实训题目描述12.2 实训要求1三实训报告内容3.1 五子棋主框架13.2 棋盘、棋子及说明信息13.3 对弈算法相关问题设计14 .实训中的部分代码25 .五子棋源程序代码36 .总、结17一、实训目的本次实训,学生可以将理论知识与具体实践相结合,巩固对JAVA 相关方法和概念的理解。通过实训单机版五子棋游戏的编程,掌握JAVA 语言编程的基础知识并能熟练运用,熟悉累声明与对象的使用,运用JAVAs

2、wing 编写单机版五子棋游戏,并实现其功能。通过本次实训,可以开拓思维,增强编程思想,为深入学习 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。在mousePresse昉法的最前面调用加入 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 J

6、Frame() Set Title(单机版五子棋”); chessboard=new chessboard(); menuBar=new JMenuBar();sysMenu=new JMenu(系统”);startMenuItem=new JMenuItem( “重新开始” );exitMenuItem=new JMenuItem( “退出 ”); backMenuItem=new JMenuItem( “ 悔棋 ”); sysMenu.add(startMenuItem);五、五子棋源程序代码/StartChessFrameimport javax.swing.*;import java.

7、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; public StartCh

8、essFrame() setTitle("单机版五子棋");chessBoard = new ChessBoard();menuBar = new JMenuBar();sysMenu = new JMenu(" 系统 ");startMenuItem = new JMenuItem(" 重新开始");exitMenuItem = new JMenuItem(" 退出 ");backMenuItem = new JMenuItem(" 悔棋 "); sysMenu.add(startMenuIt

9、em);sysMenu.add(backMenuItem); sysMenu.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

10、 private int x;private int y;private 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

11、JButton(" 重新开始");backButton = new JButton(" 悔棋 ");exitButton = new JButton(" 退出 ");toolbar.setLayout(new FlowLayout(FlowLayout.LEFT);toolbar.add(startButton);toolbar.add(backButton);toolbar.add(exitButton);startButton.addActionListener(lis);backButton.addActionListener(

12、lis);exitButton.addActionListener(lis);add(toolbar, BorderLayout.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 = Start

13、ChessFrame.this.startMenuItem | obj = startButton)System.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 vo

14、id main(String args) StartChessFrame f = new StartChessFrame();f.setVisible(true);/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 MouseLi

15、stener public static final int MARGIN = 30;public static final int GRID_SPAN = 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

16、()setBackground(Color.ORANGE);addMouseListener(this);addMouseMotionListener(new 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 &

17、lt; 0 | x1 > ROWS | y1 < 0 | y1 > COLS | gameOver| findChess(x1, y1) setCursor(new Cursor(Cursor.DEFAULT_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 * GR

18、ID_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);for (int i = 0; i < chessCount; i+) int xPos = chessListi.getX() * GRID_SPAN + MARGIN;int yPos = chessListi.ge

19、tY() * GRID_SPAN + MARGIN;g.setColor(chessListi.getColor();g.fillOval(xPos - Point.DIAMETER / 2, yPos - Point.DIAMETER / 2,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);pub

20、lic void mousePressed(MouseEvent e) if (gameOver)return;String colorName = isBlack ? " 黑棋 " : " 白棋 "xIndex = (e.getX() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;yIndex = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;if (xIndex < 0 | xIndex > ROWS | yIndex < 0 | yIndex >

21、 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 = String.format(" 恭喜, %s 赢了! ", colorName);JOptionPane.showMessageDialog(this, msg);gameOver = true;isBlack

22、 = !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, int y) for (Point c : chessList) if (c != null && c.getX() = x && c.getY() = y) ret

23、urn 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+; elsebreak;for (int x = xIndex + 1; x <= ROWS; x+) Color c = isBlack ? Color.black : Color.w

24、hite;if (getChess(x, yIndex, c) != null) continueCount+; else break;if (continueCount >= 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 +

25、1; y <= ROWS; y+) Color c = isBlack ? Color.black : Color.white;if (getChess(xIndex, y, c) != null) continueCount+; else break;if (continueCount >= 5) return true; elsecontinueCount = 1;for (int x = xIndex + 1, y = yIndex - 1; y >= 0 && x <= COLS; x+, y-) Color c = isBlack ? Colo

26、r.black : Color.white;if (getChess(x, y, c) != null) continueCount+; else break;for (int x = xIndex - 1, y = yIndex + 1; y <= ROWS && x >= 0; x-, y+) Color c = isBlack ? Color.black : Color.white;if (getChess(x, y, c) != null) continueCount+; else break;if (continueCount >= 5) retur

27、n true; elsecontinueCount = 1; for (int x = xIndex - 1, y = yIndex - 1; y >= 0 && x >= 0; 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 <= ROWS && x <= COLS; x+, y+) Color c = isBlack ? Color.black : Color.white;if (getChess(x, y, c) != null) continueCo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论