Недостижимый код - C#
Формулировка задачи:
Собственно имеется задание
Написал код:
При этом последние 2 строки определяются как недостижимый код, т.к. при нажатии любой клавиши из case запускается бесконечный цикл. Опыта в программировании мало и не понимаю, как выйти из данного цикла.
Создайте класс Hero персонажа компьютерной игры. Класс должен содержать следующие поля:
• координаты x, y;
• здоровье;
• сила;
и следующие методы
• движение вниз, вверх, влево, вправо;
• попадание удара, при котором здоровье уменьшается на 1;
• удар (в качестве параметра передается сила удара от 1 до 3), при котором уменьшается собственная сила на 0.5 единиц от силы удара.
Написать программу демонстрирующую работу объекта этого класса. Клавиши S, W, A, D отвечают за перемещение объекта, клавиша E – за удар. Нажатие клавиши X имитирует попадание в персонажа удара противника. После нажатия клавиши на экран выводится текущее состояние объекта. Клавиша Q – выход.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace ConsoleApplication3
{
class Hero
{
public int x = 0;
public int y = 0;
public int hp = 3;
public double power = 3;
public void printHero()
{
Console.WriteLine(" x={0},y={1},hp={2},power={3}", x, y, hp, power);
}
public void hitHero()
{
hp = hp - 1;
}
public void attackHero()
{
power = power - 0.5;
}
static void Main(string[] args)
{
Hero hero;
hero = new Hero();
ConsoleKeyInfo keypress;
keypress = Console.ReadKey();
while (true)
{
switch (keypress.KeyChar)
{
case 'A':
hero.x = hero.x - 1;
hero.printHero();
break;
case 'D':
hero.x = hero.x +1;
hero.printHero();
break;
case 'W':
hero.y = hero.y + 1;
hero.printHero();
break;
case 'S':
hero.y = hero.y - 1;
hero.printHero();
break;
case 'E':
hero.attackHero();
hero.printHero();
break;
case 'X':
hero.hitHero();
hero.printHero();
break;
default:
break;
}
}
Console.ReadLine();
return;
}
}
}Решение задачи: «Недостижимый код»
textual
Листинг программы
static void Main(string[] args)
{
Hero hero;
hero = new Hero();
ConsoleKeyInfo keypress;
bool cont=true
keypress = Console.ReadKey();
while (cont)
{
switch (keypress.KeyChar)
{
case 'A':
hero.x = hero.x - 1;
hero.printHero();
break;
case 'D':
hero.x = hero.x +1;
hero.printHero();
break;
case 'W':
hero.y = hero.y + 1;
hero.printHero();
break;
case 'S':
hero.y = hero.y - 1;
hero.printHero();
break;
case 'E':
hero.attackHero();
hero.printHero();
break;
case 'X':
hero.hitHero();
hero.printHero();
break;
case 'Q':
cont = false;
break;
default:
break;
}
}
Console.ReadLine();
return;
}