用PHP代码生成一个贪吃蛇游戏
时间: 2024-05-09 08:21:42 浏览: 96
php实现贪吃蛇小游戏
好的,下面是一个简单的 PHP 代码实现贪吃蛇游戏:
```php
<?php
// 定义游戏区域大小
$width = 20;
$height = 20;
// 初始化蛇的位置
$snake = [
['x' => 4, 'y' => 4],
['x' => 3, 'y' => 4],
['x' => 2, 'y' => 4],
];
// 初始化食物的位置
$food = ['x' => rand(0, $width - 1), 'y' => rand(0, $height - 1)];
// 初始化蛇头移动方向
$direction = 'right';
// 游戏循环
while (true) {
// 清空屏幕
system('clear');
// 绘制游戏区域
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
// 判断是否是蛇身
$isSnake = false;
foreach ($snake as $part) {
if ($part['x'] == $x && $part['y'] == $y) {
echo 'O';
$isSnake = true;
break;
}
}
// 判断是否是食物
if ($food['x'] == $x && $food['y'] == $y) {
echo 'X';
} else if (!$isSnake) {
echo '.';
}
}
echo PHP_EOL;
}
// 移动蛇头
$head = $snake[0];
if ($direction == 'up') {
$snake = [
['x' => $head['x'], 'y' => $head['y'] - 1],
$head,
...array_slice($snake, 1, count($snake) - 1),
];
} else if ($direction == 'down') {
$snake = [
['x' => $head['x'], 'y' => $head['y'] + 1],
$head,
...array_slice($snake, 1, count($snake) - 1),
];
} else if ($direction == 'left') {
$snake = [
['x' => $head['x'] - 1, 'y' => $head['y']],
$head,
...array_slice($snake, 1, count($snake) - 1),
];
} else if ($direction == 'right') {
$snake = [
['x' => $head['x'] + 1, 'y' => $head['y']],
$head,
...array_slice($snake, 1, count($snake) - 1),
];
}
// 判断是否吃到食物
if ($snake[0]['x'] == $food['x'] && $snake[0]['y'] == $food['y']) {
$snake[] = end($snake);
$food = ['x' => rand(0, $width - 1), 'y' => rand(0, $height - 1)];
}
// 判断游戏是否结束
$head = $snake[0];
if ($head['x'] < 0 || $head['x'] >= $width || $head['y'] < 0 || $head['y'] >= $height) {
echo '游戏结束!';
break;
}
foreach (array_slice($snake, 1, count($snake) - 1) as $part) {
if ($part['x'] == $head['x'] && $part['y'] == $head['y']) {
echo '游戏结束!';
break 2;
}
}
// 读取用户输入
$input = readline('请输入方向(上下左右):');
// 更新蛇头移动方向
if ($input == 'up' && $direction != 'down') {
$direction = 'up';
} else if ($input == 'down' && $direction != 'up') {
$direction = 'down';
} else if ($input == 'left' && $direction != 'right') {
$direction = 'left';
} else if ($input == 'right' && $direction != 'left') {
$direction = 'right';
}
}
```
该代码使用 PHP 命令行界面实现,每次循环会清空屏幕并绘制游戏区域。游戏区域大小可以通过 `$width` 和 `$height` 变量进行配置。蛇的初始位置和食物的初始位置也可以通过代码进行配置。在游戏循环中,首先根据用户输入更新蛇头移动方向,然后移动蛇头,并判断是否吃到食物或者游戏结束。如果游戏结束,则退出循环并输出提示信息。
阅读全文