推箱子小游戏v1.5

来源:互联网 发布:男士商务手表 知乎 编辑:程序博客网 时间:2024/05/02 01:57
////  main.c//  08-推箱子小游戏////  Created by xiao on 15/7/6.//  Copyright (c) 2015年 hx853318463. All rights reserved./*  分析: *///#include <stdio.h>#include <stdlib.h>#define ROWS 11#define COLS 10char map[ROWS][COLS] = {    {'*', '*', '*', '*', '*', '*', '*', '*', '*', '*'},    {'*', 'i', '*', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', '*', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', ' '},    {'*', ' ', '*', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', '*', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', '*', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', '*', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', '#', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', ' ', ' ', ' ', ' ', '*', '*', '*', '*', '*'},    {'*', '*', '*', '*', '*', '*', '*', '*', '*', '*'}};int personCurrentRow = 1;int personCurrentCol = 1;int boxCurrentRow = 8;int boxCurrentCol = 2;/** *  打印地图 */void printf_map ();/** *  获取输入字符 * *  @return 输入的字符 */char enterKey();/** *  向上移动 */void moveUp ();/** *  向下移动 */void moveDown ();/** *  向左移动 */void moveLeft ();/** *  向右移动 */void moveRight ();int main(int argc, const char * argv[]) {    // insert code here...        while(1)    {        system("clear");        printf("************推箱子小游戏************\n");        // 打印地图        printf_map();                // 如果箱子达到指定地点,就退出循环        if(boxCurrentRow == 3 && boxCurrentCol == 9)        {            printf("你真棒,智商真高");            break;        }                // 输入        char key = enterKey();                // 按输入的字符,移动        switch (key)        {            case 'w': case 'W':                moveUp();                break;            case 's': case 'S':                moveDown();                break;            case 'a': case 'A':                moveLeft();                break;            case 'd': case 'D':                moveRight();                break;            case 'q': case 'Q':                printf("你智商真低!\n");                return 0;            default :                continue;        }    }        // 推箱子        return 0;}/** *  打印地图 */void printf_map (){    for (int i = 0; i < 10; i++)    {        for (int j = 0; j < 10; j++)        {            printf("%c ", map[i][j]);        }        printf("\n");    }}/** *  获取输入字符 * *  @return 输入的字符 */char enterKey(){    char key = 'l';    printf("输入指定指令以移动小人。w-向上;s-向下;a-向左;d-向右:\n");    rewind(stdin);    scanf("%c", &key);        return key;}/** *  向上移动 */void moveUp (){    int personNextRow = personCurrentRow - 1;    int personNextCol = personCurrentCol;    if (map[personNextRow][personNextCol] == ' ')    {                map[personNextRow][personNextCol] = 'i';        map[personCurrentRow][personCurrentCol] = ' ';        personCurrentRow = personNextRow;        personCurrentCol = personNextCol;    }    else if (map[personNextRow][personNextCol] == '#')    {        if(boxCurrentRow == personNextRow && boxCurrentCol == personCurrentCol)        {            // 这时候人的下一个元素就是box            int boxNextRow = boxCurrentRow - 1;            int boxNextCol = boxCurrentCol;            map[boxNextRow][boxNextCol] = '#';            map[boxCurrentRow][boxCurrentCol] = 'i';            map[personCurrentRow][personCurrentCol] = ' ';                        boxCurrentRow = boxNextRow;            boxCurrentCol = boxNextCol;            personCurrentRow = personNextRow;            personCurrentCol = personNextCol;                    }    }}/** *  向下移动 */void moveDown (){    int personNextRow = personCurrentRow + 1;    int personNextCol = personCurrentCol;    if (map[personNextRow][personNextCol] == ' ')    {                map[personNextRow][personNextCol] = 'i';        map[personCurrentRow][personCurrentCol] = ' ';        personCurrentRow = personNextRow;        personCurrentCol = personNextCol;    }    else if (map[personNextRow][personNextCol] == '#')    {        if(boxCurrentRow == personNextRow && boxCurrentCol == personCurrentCol)        {            // 这时候人的下一个元素就是box            int boxNextRow = boxCurrentRow + 1;            int boxNextCol = boxCurrentCol;            map[boxNextRow][boxNextCol] = '#';            map[boxCurrentRow][boxCurrentCol] = 'i';            map[personCurrentRow][personCurrentCol] = ' ';                        boxCurrentRow = boxNextRow;            boxCurrentCol = boxNextCol;            personCurrentRow = personNextRow;            personCurrentCol = personNextCol;                    }    }        }/** *  向左移动 */void moveLeft (){    int personNextRow = personCurrentRow;    int personNextCol = personCurrentCol - 1;    if (map[personNextRow][personNextCol] == ' ')    {                map[personNextRow][personNextCol] = 'i';        map[personCurrentRow][personCurrentCol] = ' ';        personCurrentRow = personNextRow;        personCurrentCol = personNextCol;    }    else if (map[personNextRow][personNextCol] == '#')    {        if(boxCurrentRow == personCurrentRow && boxCurrentCol == personNextCol)        {            // 这时候人的下一个元素就是box            int boxNextRow = boxCurrentRow;            int boxNextCol = boxCurrentCol - 1;            map[boxNextRow][boxNextCol] = '#';            map[boxCurrentRow][boxCurrentCol] = 'i';            map[personCurrentRow][personCurrentCol] = ' ';                        boxCurrentRow = boxNextRow;            boxCurrentCol = boxNextCol;            personCurrentRow = personNextRow;            personCurrentCol = personNextCol;                    }    }        }/** *  向右移动 */void moveRight (){    int personNextRow = personCurrentRow;    int personNextCol = personCurrentCol + 1;    if (map[personNextRow][personNextCol] == ' ')    {                map[personNextRow][personNextCol] = 'i';        map[personCurrentRow][personCurrentCol] = ' ';        personCurrentRow = personNextRow;        personCurrentCol = personNextCol;    }    else if (map[personNextRow][personNextCol] == '#')    {        if(boxCurrentRow == personCurrentRow && boxCurrentCol == personNextCol)        {            // 这时候人的下一个元素就是box            int boxNextRow = boxCurrentRow;            int boxNextCol = boxCurrentCol + 1;            map[boxNextRow][boxNextCol] = '#';            map[boxCurrentRow][boxCurrentCol] = 'i';            map[personCurrentRow][personCurrentCol] = ' ';                        boxCurrentRow = boxNextRow;            boxCurrentCol = boxNextCol;            personCurrentRow = personNextRow;            personCurrentCol = personNextCol;                    }    }}

0 0
原创粉丝点击