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