五子棋游戏源代码

偶写的一个五子棋游戏,写得不好,请多多指正。

 本源代码实现的是一单机双人对战五子棋游戏
 本源代码由五个java源程序文件组成,Game.java、GameFrame.java、GamePanel.java、 ChessMan.java、Player.java
源代码下载

源代码:

Game.java
import javax.swing.*;



public class Game {

   
    public static void main(String[] args) {
       
        GameFrame GFrame=new GameFrame();
        GFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GFrame.setVisible(true);
    }

}

GameFrame.java
import java.awt.*;
import javax.swing.*;



class GameFrame extends JFrame {

    private static final int Width=570;
    private static final int Height=470;
   
    GameFrame(){
        setTitle("五子棋游戏");
        CenteredFrame();
        setSize(Width,Height);       
        GamePanel Gpanel=new GamePanel();
        add(Gpanel);      
    }
   
    void CenteredFrame(){
        Toolkit kit=Toolkit.getDefaultToolkit();
        Dimension  screenSize=kit.getScreenSize();
        int screenHeight=screenSize.height;
        int screenWidth=screenSize.width;
       
        int Xposition=(screenWidth-Width)/2;
        int Yposition=(screenHeight-Height)/2;
        setLocation(Xposition,Yposition);
    }
}

GamePanel.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;







class GamePanel extends JPanel {

    private Point cursor=new Point(40,60);  //棋盘坐标
    private int[][] ChessState=new int[18][18];//棋盘状态   
    private int i=0;//横坐标   
    private int j=0;//纵坐标
    private final static int testnum=5;//五子棋的规定棋子数
    private Player Black=new Player(1,Color.BLACK,"黑方");//黑方棋子
    private Player White=new Player(2,Color.WHITE,"白方");//白方棋子
    private Player Cplayer=null;//当前用户的引用
    private JTextField textBlack=new JTextField("",5);//黑方文本提示框对象和文本长度设置
    private JTextField textWhite=new JTextField("",5);//白方文本提示框对象和文本长度设置
    private String Nothing="";
    private String textblack="请黑方下子";//黑方提示文本
    private String textwhite="请白方下子";//白方提示文本
   
   
    GamePanel(){
        setLayout(null);
        Initialization();
        setFocusable(true);
       
         JButton Rutton=new JButton("重新开局");
        Rutton.setBounds(20,14,100,26);
        RestartListener restart=new RestartListener();
        Rutton.addActionListener(r

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是Python实现的五子棋游戏源代码,代码中包含了游戏界面的绘制、玩家与电脑的下棋逻辑以及胜负判断等功能。如果需要获取完整的源码,可以关注微信公众号“码农升级”并后台回复“五子棋”获取。 ```python import pygame import sys import random # 初始化游戏 pygame.init() # 设置游戏窗口大小 WINDOW_WIDTH = 640 WINDOW_HEIGHT = 640 CHESSBOARD_SIZE = 600 CHESSBOARD_LEFT = (WINDOW_WIDTH - CHESSBOARD_SIZE) // 2 CHESSBOARD_TOP = (WINDOW_HEIGHT - CHESSBOARD_SIZE) // 2 CHESS_SIZE = 30 CHESS_RADIUS = CHESS_SIZE // 2 LINE_WIDTH = 2 FPS = 60 BLACK = (0, 0, 0) WHITE = (255, 255, 255) BLUE = (0, 0, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) # 创建游戏窗口 screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption("五子棋") # 加载棋子图片 black_chess = pygame.image.load("black.png") white_chess = pygame.image.load("white.png") # 创建棋盘 chessboard = [[0] * 15 for i in range(15)] # 判断是否结束游戏 game_over = False # 判断当前是玩家还是电脑下棋 player_turn = True # 判断是否可以悔棋 can_undo = False # 判断是否可以撤销悔棋 can_redo = False # 记录下棋步骤 steps = [] # 判断是否是第一次下棋 first_move = True # 判断是否是电脑先手 computer_first = False # 判断是否显示提示信息 show_tip = False # 判断是否已经选择了难度 difficulty_selected = False # 判断是否已经选择了先手或后手 turn_selected = False # 判断是否已经开始游戏 game_started = False # 判断是否已经结束游戏 game_ended = False # 判断是否已经退出游戏 game_quit = False # 判断是否已经显示了胜利信息 show_win_info = False # 判断是否已经显示了平局信息 show_draw_info = False # 判断是否已经显示了悔棋信息 show_undo_info = False # 判断是否已经显示了撤销悔棋信息 show_redo_info = False # 判断是否已经显示了提示信息 show_tip_info = False # 判断是否已经显示了难度选择界面 show_difficulty_select = False # 判断是否已经显示了先手后手选择界面 show_turn_select = False # 判断是否已经显示了游戏开始界面 show_game_start = False # 判断是否已经显示了游戏结束界面 show_game_end = False # 判断是否已经显示了退出游戏界面 show_game_quit = False # 判断是否已经显示了重新开始界面 show_restart = False # 判断是否已经显示了重新开始确认界面 show_restart_confirm = False # 判断是否已经显示了重新开始取消界面 show_restart_cancel = False # 判断是否已经显示了重新开始提示信息 show_restart_info = False # 判断是否已经显示了重新开始确认提示信息 show_restart_confirm_info = False # 判断是否已经显示了重新开始取消提示信息 show_restart_cancel_info = False # 判断是否已经显示了背景音乐开关 show_music_switch = False # 判断是否已经显示了音效开关 show_sound_switch = False # 判断是否已经播放了背景音乐 music_played = False # 判断是否已经播放了下棋音效 sound_played = False # 判断是否已经播放了胜利音效 win_sound_played = False # 判断是否已经播放了平局音效 draw_sound_played = False # 判断是否已经播放了悔棋音效 undo_sound_played = False # 判断是否已经播放了撤销悔棋音效 redo_sound_played = False # 判断是否已经播放了提示音效 tip_sound_played = False # 判断是否已经播放了重新开始音效 restart_sound_played = False # 判断是否已经播放了退出游戏音效 quit_sound_played = False # 判断是否已经播放了背景音乐 music_on = True # 判断是否已经开启了音效 sound_on = True # 加载背景音乐 pygame.mixer.music.load("bgm.mp3") # 加载音效 move_sound = pygame.mixer.Sound("move.wav") win_sound = pygame.mixer.Sound("win.wav") draw_sound = pygame.mixer.Sound("draw.wav") undo_sound = pygame.mixer.Sound("undo.wav") redo_sound = pygame.mixer.Sound("redo.wav") tip_sound = pygame.mixer.Sound("tip.wav") restart_sound = pygame.mixer.Sound("restart.wav") quit_sound = pygame.mixer.Sound("quit.wav") # 设置背景音乐音量 pygame.mixer.music.set_volume(0.5) # 设置音效音量 move_sound.set_volume(0.5) win_sound.set_volume(0.5) draw_sound.set_volume(0.5) undo_sound.set_volume(0.5) redo_sound.set_volume(0.5) tip_sound.set_volume(0.5) restart_sound.set_volume(0.5) quit_sound.set_volume(0.5) # 播放背景音乐 pygame.mixer.music.play(-1) # 绘制棋盘 def draw_chessboard(): screen.fill(WHITE) pygame.draw.rect(screen, BLACK, (CHESSBOARD_LEFT, CHESSBOARD_TOP, CHESSBOARD_SIZE, CHESSBOARD_SIZE), LINE_WIDTH) for i in range(15): pygame.draw.line(screen, BLACK, (CHESSBOARD_LEFT + CHESS_SIZE // 2, CHESSBOARD_TOP + CHESS_SIZE // 2 + i * CHESS_SIZE), (CHESSBOARD_LEFT + CHESSBOARD_SIZE - CHESS_SIZE // 2, CHESSBOARD_TOP + CHESS_SIZE // 2 + i * CHESS_SIZE), LINE_WIDTH) pygame.draw.line(screen, BLACK, (CHESSBOARD_LEFT + CHESS_SIZE // 2 + i * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2), (CHESSBOARD_LEFT + CHESS_SIZE // 2 + i * CHESS_SIZE, CHESSBOARD_TOP + CHESSBOARD_SIZE - CHESS_SIZE // 2), LINE_WIDTH) pygame.draw.circle(screen, BLACK, (CHESSBOARD_LEFT + CHESSBOARD_SIZE // 2, CHESSBOARD_TOP + CHESSBOARD_SIZE // 2), 5, 0) pygame.draw.circle(screen, BLACK, (CHESSBOARD_LEFT + CHESS_SIZE // 2 + 3 * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2 + 3 * CHESS_SIZE), 5, 0) pygame.draw.circle(screen, BLACK, (CHESSBOARD_LEFT + CHESS_SIZE // 2 + 11 * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2 + 3 * CHESS_SIZE), 5, 0) pygame.draw.circle(screen, BLACK, (CHESSBOARD_LEFT + CHESS_SIZE // 2 + 3 * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2 + 11 * CHESS_SIZE), 5, 0) pygame.draw.circle(screen, BLACK, (CHESSBOARD_LEFT + CHESS_SIZE // 2 + 11 * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2 + 11 * CHESS_SIZE), 5, 0) # 绘制棋子 def draw_chess(x, y, color): if color == 1: screen.blit(black_chess, (x - CHESS_RADIUS, y - CHESS_RADIUS)) else: screen.blit(white_chess, (x - CHESS_RADIUS, y - CHESS_RADIUS)) # 判断是否胜利 def check_win(x, y, color): count = 1 # 横向判断 for i in range(1, 5): if x - i < 0 or chessboard[x - i][y] != color: break count += 1 for i in range(1, 5): if x + i > 14 or chessboard[x + i][y] != color: break count += 1 if count >= 5: return True count = 1 # 纵向判断 for i in range(1, 5): if y - i < 0 or chessboard[x][y - i] != color: break count += 1 for i in range(1, 5): if y + i > 14 or chessboard[x][y + i] != color: break count += 1 if count >= 5: return True count = 1 # 左上到右下判断 for i in range(1, 5): if x - i < 0 or y - i < 0 or chessboard[x - i][y - i] != color: break count += 1 for i in range(1, 5): if x + i > 14 or y + i > 14 or chessboard[x + i][y + i] != color: break count += 1 if count >= 5: return True count = 1 # 右上到左下判断 for i in range(1, 5): if x - i < 0 or y + i > 14 or chessboard[x - i][y + i] != color: break count += 1 for i in range(1, 5): if x + i > 14 or y - i < 0 or chessboard[x + i][y - i] != color: break count += 1 if count >= 5: return True return False # 玩家下棋 def player_move(x, y): global player_turn, can_undo, can_redo, steps, first_move, show_tip, show_tip_info, sound_played if not game_over and player_turn and chessboard[x][y] == 0: chessboard[x][y] = 1 draw_chess(CHESSBOARD_LEFT + CHESS_SIZE // 2 + x * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2 + y * CHESS_SIZE, 1) steps.append((x, y)) can_undo = True can_redo = False if first_move: first_move = False else: if show_tip: show_tip_info = True tip_sound.play() tip_sound_played = True else: sound_played = True move_sound.play() if check_win(x, y, 1): game_over = True show_win_info = True win_sound.play() win_sound_played = True else: player_turn = False # 电脑下棋 def computer_move(): global player_turn, can_undo, can_redo, steps, first_move, show_tip, show_tip_info, sound_played if not game_over and not player_turn: if difficulty == 1: x, y = random.randint(0, 14), random.randint(0, 14) while chessboard[x][y] != 0: x, y = random.randint(0, 14), random.randint(0, 14) else: x, y = 0, 0 max_score = -1 for i in range(15): for j in range(15): if chessboard[i][j] == 0: score = get_score(i, j, 2) if score > max_score: max_score = score x, y = i, j chessboard[x][y] = 2 draw_chess(CHESSBOARD_LEFT + CHESS_SIZE // 2 + x * CHESS_SIZE, CHESSBOARD_TOP + CHESS_SIZE // 2 + y * CHESS_SIZE, 2) steps.append((x, y)) can_undo = True can_redo = False if first_move: first_move = False else: if show_tip: show_tip_info = True tip_sound.play() tip_sound_played = True else: sound_played = True move_sound.play() if check_win(x, y, 2): game_over = True show_win_info = True win_sound.play() win_sound_played = True else: player_turn = True # 获取当前

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值