五子棋(绘制棋盘)

package fivechess; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; /** * 棋盘类,用来绘制棋盘 * * @author Administrator * */ public class ChessBoard extends JFrame implements ActionListener { private GraphicPanel panel; private JMenuBar bar; private JMenu game; public static JLabel label; public static final int DEFAULT_WIDTH = 650; public static final int DEFAULT_HEIGHT = 680; public ChessBoard() { super("五子棋 v1.1"); label = new JLabel(" ", JLabel.CENTER); panel = new GraphicPanel(); this.add(panel, BorderLayout.CENTER); this.add(label, BorderLayout.SOUTH); bar = new JMenuBar(); game = new JMenu("游戏"); JMenuItem item = null; game.add(item = new JMenuItem("重新开始")); item.addActionListener(this); game.add(item = new JMenuItem("保存游戏...")); item.addActionListener(this); game.add(item = new JMenuItem("装载游戏...")); item.addActionListener(this); game.addSeparator(); game.add(item = new JMenuItem("退出")); item.addActionListener(this); bar.add(game); this.setJMenuBar(bar); this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("保存游戏...")) { // 1,弹出保存文件对话框 JFileChooser jfc = new JFileChooser(); jfc.showSaveDialog(this); // 2,获得用户选择的文件 File f = jfc.getSelectedFile(); // 3,调用 if (f != null) { if (panel.saveToFile(f)) { JOptionPane.showMessageDialog(this, "保存成功!"); } else { JOptionPane.showMessageDialog(this, "保存文件失败!"); } } return; } if (e.getActionCommand().equals("装载游戏...")) { // 1,弹出打开文件对话框 JFileChooser jfc = new JFileChooser(); jfc.showOpenDialog(this); // 2,获得用户选择的文件 File f = jfc.getSelectedFile(); // 3,调用 if (f != null) { if (!panel.loadFromFile(f)) { JOptionPane.showMessageDialog(this, "文件格式不正确或已损坏!"); } } return; } if (e.getActionCommand().equals("重新开始")) { panel.clear(); } if (e.getActionCommand().equals("退出")) { System.exit(0); } } public static void main(String[] args) { new ChessBoard(); } }
以下是五子棋绘制棋盘和有颜色棋子的C语言代码示例: ``` #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define BOARD_SIZE 15 // 棋盘大小 #define BLACK 'X' // 黑色棋子 #define WHITE 'O' // 白色棋子 void DrawBoard(char board[][BOARD_SIZE]); void PutChess(char board[][BOARD_SIZE], int x, int y, char player); int main() { char board[BOARD_SIZE][BOARD_SIZE] = {0}; // 棋盘初始化 DrawBoard(board); // 绘制棋盘 PutChess(board, 7, 7, BLACK); // 在(7,7)处放置一颗黑色棋子 PutChess(board, 6, 6, WHITE); // 在(6,6)处放置一颗白色棋子 DrawBoard(board); // 重新绘制棋盘,显示棋子 return 0; } // 绘制棋盘 void DrawBoard(char board[][BOARD_SIZE]) { system("cls"); // 清屏 // 绘制列号 printf(" "); for (int i = 0; i < BOARD_SIZE; i++) { printf("%2d", i + 1); } printf("\n"); // 绘制横线和行号及棋子 for (int i = 0; i < BOARD_SIZE; i++) { printf("%2d", i + 1); for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == BLACK) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); printf(" %c", board[i][j]); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); } else if (board[i][j] == WHITE) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); printf(" %c", board[i][j]); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); } else { printf(" +"); } } printf("\n"); } } // 放置棋子 void PutChess(char board[][BOARD_SIZE], int x, int y, char player) { if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE) { printf("无效的位置\n"); return; } if (board[x][y] == BLACK || board[x][y] == WHITE) { printf("此处已有棋子\n"); return; } board[x][y] = player; } ``` 注意:此代码只是演示如何绘制棋盘和放置棋子,并未实现完整的五子棋游戏逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值