【C语言】用C语言输出一个吃豆人

大圆盘减去扇形和小圆盘:

#include <math.h>
#include <stdio.h>
int main() {
double x, y;
for (y = 1; y >= -1; y -= 0.05, putchar('\n'))
for (x = -1; x <= 1; x += 0.025)
putchar(" *"[
x * x + y * y < 1 && /* disk */
fabs(atan2(y, x)) > 0.5 && /* mouth */
x * x + pow(y - 0.5, 2) > 0.02]); /* eye */
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个简单的吃豆人游戏的 C 语言实现,仅供参考: ```c #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define WIDTH 20 #define HEIGHT 20 #define MAX_FOODS 5 int x, y; // 吃豆人的位置 int score; // 得分 int foods[MAX_FOODS][2]; // 食物的位置 int num_foods; // 剩余食物数量 int map[HEIGHT][WIDTH]; // 地图 // 初始化地图,0 表示空位,1 表示墙,2 表示食物,3 表示吃豆人 void init_map() { int i, j; for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) { if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) { map[i][j] = 1; // 边界上都是墙 } else { map[i][j] = 0; // 中间都是空位 } } } // 随机放置食物 num_foods = 0; while (num_foods < MAX_FOODS) { int fx = rand() % (WIDTH - 2) + 1; int fy = rand() % (HEIGHT - 2) + 1; if (map[fy][fx] == 0) { map[fy][fx] = 2; foods[num_foods][0] = fx; foods[num_foods][1] = fy; num_foods++; } } // 放置吃豆人 x = WIDTH / 2; y = HEIGHT / 2; map[y][x] = 3; score = 0; } // 显示地图 void show_map() { int i, j; for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) { switch (map[i][j]) { case 0: // 空位 printf(" "); break; case 1: // 墙 printf("#"); break; case 2: // 食物 printf("."); break; case 3: // 吃豆人 printf("O"); break; } } printf("\n"); } printf("Score: %d\n", score); } // 处理按键 void handle_input() { if (_kbhit()) { char c = _getch(); switch (c) { case 'w': if (map[y - 1][x] != 1) y--; break; case 's': if (map[y + 1][x] != 1) y++; break; case 'a': if (map[y][x - 1] != 1) x--; break; case 'd': if (map[y][x + 1] != 1) x++; break; } } } // 更新游戏状态 void update_game() { // 检查是否吃到食物 int i; for (i = 0; i < num_foods; i++) { int fx = foods[i][0]; int fy = foods[i][1]; if (x == fx && y == fy) { // 吃到食物 map[fy][fx] = 0; // 食物消失 score++; // 放置新食物 fx = rand() % (WIDTH - 2) + 1; fy = rand() % (HEIGHT - 2) + 1; if (map[fy][fx] == 0) { map[fy][fx] = 2; foods[i][0] = fx; foods[i][1] = fy; } } } // 更新吃豆人位置 map[y][x] = 3; } int main() { srand(time(NULL)); init_map(); while (1) { system("cls"); show_map(); handle_input(); update_game(); Sleep(100); } return 0; } ``` 这个程序使用了 Windows 系统的控制台函数,可能无法在其他系统或 IDE 中运行。如果有需要,请自行修改代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值