用perl语言写井字棋,并保存在名字为1.pl的文件里
时间: 2024-02-28 21:57:55 浏览: 21
以下是使用 Perl 语言编写井字棋并保存在名为 1.pl 的文件中的示例代码:
```perl
#!/usr/bin/perl
use strict;
use warnings;
# 初始化棋盘
my @board = ([" ", " ", " "], [" ", " ", " "], [" ", " ", " "]);
# 打印棋盘
sub print_board {
print "+---+---+---+\n";
for my $row (@board) {
print "| " . join(" | ", @$row) . " |\n";
print "+---+---+---+\n";
}
}
# 判断是否胜利
sub check_win {
my ($player) = @_;
# 判断行
for my $row (@board) {
if ($row->[0] eq $player && $row->[1] eq $player && $row->[2] eq $player) {
return 1;
}
}
# 判断列
for my $col (0..2) {
if ($board[0][$col] eq $player && $board[1][$col] eq $player && $board[2][$col] eq $player) {
return 1;
}
}
# 判断对角线
if ($board[0][0] eq $player && $board[1][1] eq $player && $board[2][2] eq $player) {
return 1;
}
if ($board[0][2] eq $player && $board[1][1] eq $player && $board[2][0] eq $player) {
return 1;
}
return 0;
}
# 主程序
sub main {
my $player = "X";
my $turns = 0;
while ($turns < 9) {
print_board();
# 获取玩家输入
my $input;
do {
print "Player $player's turn. Please enter row (0-2) and column (0-2): ";
$input = <STDIN>;
} while ($input !~ /^\s*[0-2]\s+[0-2]\s*$/);
my ($row, $col) = split /\s+/, $input;
# 判断位置是否合法
if ($board[$row][$col] eq " ") {
$board[$row][$col] = $player;
$turns++;
# 判断是否胜利
if (check_win($player)) {
print_board();
print "Player $player wins!\n";
return;
}
# 切换玩家
$player = $player eq "X" ? "O" : "X";
} else {
print "Invalid move. Please try again.\n";
}
}
print_board();
print "Tie game!\n";
}
main();
```
将上述代码复制到一个名为 `1.pl` 的文件中,并在终端中运行 `perl 1.pl` 即可开始玩井字棋游戏。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)