rust井子棋游戏

rust井子棋游戏源代码

use std::io;
struct ChessBoard{
    val: Vec<i8>,
    last_drop: (usize, usize)
}
impl ChessBoard{
    fn is_win(&mut self) -> bool{
        //行
        let mut temp;
        for i in 0..3{
            temp = self.val[(i*3)] + self.val[(i*3)+1] + self.val[(i*3)+1];
            if  temp == -3 || temp == 3{
                return true
            }
        }
        //竖
        for i in 0..3{
            temp = self.val[i] + self.val[3+i] + self.val[6+i];
            if  temp == -3 || temp == 3{
                return true
            }
        }
        //斜
        temp = self.val[0] + self.val[4] + self.val[8];
        if  temp == -3 || temp == 3{
            return true
        }
        temp = self.val[2] + self.val[4] + self.val[6];
        if  temp == -3 || temp == 3{
            return true
        }
        return false;
    }
    fn drop_black(&mut self, row:usize, col:usize){
        self.val[(row-1)*3 + col - 1] = 1;
        self.last_drop = (row - 1, col - 1);
    }
    fn drop_white(&mut self, row:usize, col:usize){
        self.val[(row-1)*3 + col - 1] = -1;
        self.last_drop = (row - 1, col - 1);
    }
    fn new() -> ChessBoard{
        ChessBoard{
            val: vec![0, 0, 0, 0, 0, 0, 0, 0, 0,],
            last_drop: (0, 0)
        }
    }
    fn print(&self){
        let mut flag = 0;
        for i in &self.val {
            print!("{val:>width$}",val = i, width=6);
            flag += 1;
            if flag % 3 == 0 {
                println!("");
            }
        }
    }
}
fn main() {
    let mut chess_board = ChessBoard::new();
    let mut flag = true;
    chess_board.print();
    println!("现在开始井子棋游戏");
    loop{
        println!("请输入行与列");
        let mut row = String::new();
        let mut col = String::new();
        io::stdin().read_line(&mut row).expect("错误");
        io::stdin().read_line(&mut col).expect("错误");
        let row = match row.trim().parse() {
            Ok(val) => val,
            Err(_) => continue,
        };
        let col = match col.trim().parse() {
            Ok(col) => col,
            Err(_) => continue,
        };
        if flag == true{
            flag = false;
            chess_board.drop_black(row, col);
        } else {
            flag = true;
            chess_board.drop_white(row, col);
        }
        if chess_board.is_win(){
            break;
        }
        chess_board.print();
    }
    if flag == false{
        println!("黑方胜");
    } else {
        println!("白方胜");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值