C语言练手小项目——经典迷宫

C语言答辩项目——小迷宫

  1. 用到的标准库
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <conio.h>
  1. 地图的设定和方向键设定

#define M 50
#define N 24

void myout();
void wrongremind();
int up(int x);          //对应W
int down(int x);        //对应S
int left(int y);        //对应A
int right(int y);       //对应D

int main()
{
    begining: ;
    int start;
    start = clock();
    system("color 3");
    printf("迷宫小游戏\n");
    printf("注意:方向字符为大写英文字母\n");
    printf("\n");
    char a[M][M] = {"************************",
                    "*|--------------------|*",
                    "*|####################|*",
                    "*|#O##################|*",
                    "*|# ######            |*",//5
                    "*|#     #  ###########|*",
                    "*|##### # ############|*",
                    "*|##### # ############|*",
                    "*|##### # ############|*",//10
                    "*|##### # ############|*",
                    "*|##    # ############|*",
                    "*|## #### ############|*",
                    "*|## #### ############|*",
                    "*|##      ############|*",//15
                    "*|####################|*",
                    "*|####################|*",
                    "*|####################|*",
                    "*|--------------------|*",
                    "************************",//20

                    };                //设置一个24*20的迷宫地图


  1. 自定义移动函数
void myout()
{
   Sleep(200);
}

void wrongremind()
{
    printf("wrong!!!");
    system("pause");
    printf("任意键继续\n");
}

int up(int x)
{
    x --;
    printf("向上移动了一个单位\n");
    return x;
}

int down(int x)
{
    x ++;
    printf("向下移动了一个单位\n");
    return x;
}

int  left(int y)
{
    y --;
    printf("向左移动了一个单位\n");
    return y;
}

int right(int y)
{
    y++;
    printf("向右移动了一个单位\n");
    return y;
}

  1. 项目主体:使用循环来判断是否有障碍物以及通关与否
    int i = 0;
    int x = 0;
    int y = 0;      //利用x,y表示所处位置坐标
    int p = 0;
    int q = 0;      //利用p,q表示出口位置坐标
    char ch;
    x = 3;
    y = 3;
    p = 4;
    q = 21;
    for(i = 0;i <= N;i ++)
        {
            puts(a[i]);
        }
        //屏幕输出移动前的情况
    while(x != p || y != q)
    {
        input: ;
        ch = getch();      //设置一变量来储存键盘所输入的方向大写字符
        if(ch == 'W')
        {
            if(a[x - 1][y] != '#')
            {
                a[x][y] = ' ';
                x = up(x);
                a[x][y] = 'O';
                myout();
            }
            else
            {
                wrongremind();
            }
        }
                                        //向上移动
        if(ch == 'A')
        {
            if(a[x][y - 1] != '#')
            {
                a[x][y] = ' ';
                y = left(y);
                a[x][y] = 'O';
                myout();
            }
            else
            {
                wrongremind();
            }
        }
                                        //向左移动
        if(ch == 'S')
        {
            if(a[x + 1][y] != '#')
            {
                a[x][y] = ' ';
                x = down(x);
                a[x][y] = 'O';
                myout();
            }
            else
            {
                wrongremind();
            }
        }
                                        //向下移动
        if(ch == 'D')
        {
            if(a[x][y + 1] != '#')
            {
                a[x][y] = ' ';
                y = right(y);
                a[x][y] = 'O';
                myout();
            }
            else
            {
                wrongremind();
            }
        }
                                        //向右移动
        system("cls");
        for(i = 0;i <= N;i ++)
            {
                puts(a[i]);
            }
                                        //屏幕输出移动后的情况
    }

    system("cls");
    printf("you win!!!\n");
                                        //提示已经胜利
    printf("spent times:%dms\n",clock()-start);
                                        //显示闯关的时间
    printf("Do you want to play it again? \n");
    printf("input you answer!\n");
                                        //是否再次进行游戏
    printf("please input Y or N\n");
    char answer = '\0';
    scanf("%c",&answer);
    if(answer == 'Y')
    {
        goto begining;          //利用goto函数在执行一次游戏
    }
    else
    {
        goto end;               //利用goto函数结束游戏的运行
    }
    end:
        printf("Thanks for you play!!!");
    return 0;
}

展开阅读全文

Windows版YOLOv4目标检测实战:训练自己的数据集

04-26
©️2020 CSDN 皮肤主题: 1024 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值