10.玩家移动相关

10.游戏场景-玩家移动相关


10.1 知识点

声明玩家的相关属性

// 包括位置坐标、最大最小攻击力、血量、玩家图标、玩家颜色、输入的内容
int playerX = 4;
int playerY = 5;
int playerAtkMin = 8;
int playerAtkMax = 12;
int playerHp = 100;
string playerIcon = "●";
// 申明一个颜色变量,用于绘制玩家时使用
ConsoleColor playerColor = ConsoleColor.Yellow;
// 申明一个字符型变量来存储玩家输入的内容,在外面申明可以节约性能
char playerInput;

游戏场景死循环内,把玩家绘制出来

// 设置光标位置和颜色,绘制玩家图标
Console.SetCursorPosition(playerX, playerY);
Console.ForegroundColor = playerColor;
Console.Write(playerIcon);

游戏场景死循环内,得到玩家输入

playerInput = Console.ReadKey(true).KeyChar;

游戏场景死循环内,擦除上一次玩家所在位置绘制的玩家图形

Console.SetCursorPosition(playerX, playerY);
Console.Write("  ");

游戏场景死循环内,根据玩家输入的字符枚举获得新的位置信息

switch (playerInput)
{
    case 'W':
    case 'w':
        --playerY;
        if (playerY < 1)
        {
            playerY = 1;
        }    
        // 位置如果和boss重合了,并且boss没有死
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            // 拉回去
            ++playerY;
        }
        break;
    case 'A':
    case 'a':
        playerX -= 2;
        if (playerX < 2)
        {
            playerX = 2;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            // 拉回去
            playerX += 2;
        }
        break;
    case 'S':
    case 's':
        ++playerY;
        if (playerY > h - 7)
        {
            playerY = h - 7;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            // 拉回去
            --playerY;
        }
        break;
    case 'D':
    case 'd':
        playerX += 2;
        if (playerX > w - 4)
        {
            playerX = w - 4;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            // 拉回去
            playerX -= 2;
        }
        break;
}

10.2 知识点代码

在游戏场景死循环外:

//声明玩家的相关属性
//包括位置坐标、最大最小攻击力、血量、玩家图标、玩家颜色、输入的内容
int playerX = 4;
int playerY = 5;
int playerAtkMin = 8;
int playerAtkMax = 12;
int playerHp = 100;
string playerIcon = "●";
//声明一个颜色变量,用于绘制玩家时使用
ConsoleColor playerColor = ConsoleColor.Yellow;
//声明一个字符型变量来存储玩家输入的内容,在外面声明可以节约性能
char playerInput;

在游戏场景死循环内:

//游戏场景死循环内,把玩家绘制出来

//设置光标位置和颜色,绘制玩家图标
Console.SetCursorPosition(playerX, playerY);
Console.ForegroundColor = playerColor;
Console.Write(playerIcon);

//游戏场景死循环内,得到玩家输入
playerInput = Console.ReadKey(true).KeyChar;

//游戏场景死循环内,擦除上一次玩家所在位置绘制的玩家图形
Console.SetCursorPosition(playerX, playerY);
Console.Write("  ");

//游戏场景死循环内,根据玩家输入的字符枚举获得新的位置信息
switch (playerInput)
{
    case 'W':
    case 'w':
        --playerY;
        if (playerY < 1)
        {
            playerY = 1;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            //位置如果和boss重合了,并且boss没有死
            //拉回去
            ++playerY;
        }
        break;
    case 'A':
    case 'a':
        playerX -= 2;
        if (playerX < 2)
        {
            playerX = 2;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            //拉回去
            playerX += 2;
        }
        break;
    case 'S':
    case 's':
        ++playerY;
        if (playerY > h - 7)
        {
            playerY = h - 7;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            //拉回去
            --playerY;
        }
        break;
    case 'D':
    case 'd':
        playerX += 2;
        if (playerX > w - 4)
        {
            playerX = w - 4;
        }
        else if (playerX == bossX && playerY == bossY && bossHp > 0)
        {
            //拉回去
            playerX -= 2;
        }
        break;
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏