일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 기초
- 백준
- Material
- dfs
- guide
- 재귀
- github
- Class
- w3school
- python
- 문제풀이
- dynamic
- 프로그래밍
- W3Schools
- Unreal Engine 5
- Programming
- UE5
- 파이썬
- C#
- parameter
- loop
- Basic
- Unity
- String
- c++
- Tutorial
- 오류
- 시작해요 언리얼 2022
- DP
- Algorithm
- Today
- Total
행복한 개구리
C# 21.03.09.과제 2 본문
2-1 드라군 건물파괴

드라군 12마리(1부대)가 에볼루션 체임버를 깨는 과정을 출력. 에볼루션 체임버의 체력재생은 배제함.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{
static void Main(string[] args)
{
string unitName = "드라군";
float dmg = 20;
string bdName = "에볼루션 체임버";
float bdMaxHp = 750;
float bdHp = bdMaxHp;
float bdArm = 1;
;
Console.WriteLine("{0}이 12개(1부대)가 있습니다.", unitName);
Console.WriteLine("{0}의 공격력은 {1}입니다.", unitName, dmg);
Console.WriteLine("{0}의 체력은 {1}입니다.", bdName, bdHp);
Console.WriteLine("{0}의 방어력은 {1}입니다.", bdName, bdArm);
Console.WriteLine("{0} 1부대가 {1}를 공격합니다.", unitName, bdName);
int i = 0;
while (i < 10)
{
bdHp -= (dmg - bdArm) * 12;
float per = (bdHp / bdMaxHp) * 100;
i++;
if (bdHp <= 0)
{
bdHp = 0;
per = 0;
}
Console.WriteLine("{0} 체력 : {1} {2}%", bdName, bdHp, per);
if (bdHp <= 0)
{
break;
}
}
Console.WriteLine("{0}가 파괴되었습니다.", bdName);
Console.WriteLine("{0}부대가 {1}회 공격하였습니다.", unitName, i);
//드라군이 12개(1부대)가 있습니다.
//드라군의 공격력은 20입니다.
//에볼루션 체임버의 체력은 750입니다.
//에볼루션 체임버의 방어력은 1입니다.
//드라군 1부대가 에볼루션 체임버를 공격합니다.
//에볼루션 체임버 체력 : 522
//....
//에볼루션 체임버 체력 : 0
//에볼루션 체임버가 파괴되었습니다.
//드라군부대가 n회 공격하였습니다.
}
}
}

============================================================================
2-2 질럿 커맨드 파괴 & SCV 건물 수리

질럿 20마리가 커맨드를 공격하고 SCV 4마리가 커맨드를 수리하는 식을 출력.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{
enum attackStyle
{
Single,
Double
}
static void Main(string[] args)
{
string unitName1 = "질럿";
attackStyle atkType = attackStyle.Double;
float singleDmg = 8;
float doubleDmg = (singleDmg * 2);
string bdName = "커맨드 센터";
float bdMaxHp = 1500;
float bdTime = 120;
float bdArm = 1;
string unitName2 = "SCV";
float repair = bdMaxHp * 0.9f / bdTime;
float bdHp = bdMaxHp;
Console.WriteLine("{0}이 20마리 있습니다.", unitName1);
Console.WriteLine("{0} 공격 타입 : {1}", unitName1, atkType);
Console.WriteLine("{0}의 공격력 : {1}", unitName1, doubleDmg);
Console.WriteLine("{0}가 4마리 있습니다.", unitName2);
Console.WriteLine("{0} 수리속도 : {1}", unitName2, repair);
Console.WriteLine("{0}가 있습니다.", bdName);
Console.WriteLine("{0} 건설시간 : {1}", bdName, bdTime);
Console.WriteLine("{0} 체력 : {1}", bdName, bdHp);
Console.WriteLine("{0} 방어력 : {1}", bdName, bdArm);
Console.WriteLine("{0} 20마리가 {1}를 공격합니다.", unitName1, bdName);
Console.WriteLine("{0} 4마리가 {1} 수리를 시작합니다.", unitName2, bdName);
int i = 0;
while (i < 50)
{
i++;
Console.WriteLine("{0}들이 {1}번째 공격을 합니다. (-{2})", unitName1, i, (singleDmg - bdArm) * 2 * 12);
bdHp -= (singleDmg - bdArm) * 2 * 20;
float per = bdHp / bdMaxHp;
if (bdHp > 0)
{
Console.WriteLine("{0}들이 {1}를 수리했습니다. ({2})", unitName2, bdName, repair * 4);
bdHp += repair * 4;
}
else if (bdHp <=0)
{
bdHp = 0;
per = 0;
}
Console.WriteLine("{0} 체력이 {1} 남았습니다. ({2}%)", bdName, bdHp, per);
if (bdHp == 0)
{
break;
}
}
Console.WriteLine("{0}가 파괴되었습니다.", bdName);
Console.WriteLine("남아있는 건물이 없습니다.");
Console.WriteLine("패배");
//질럿이 7마리 있습니다.
//질럿 공격 타입 :
//질럿 공격력 : 8*2
//SCV가 4마리 있습니다.
//SCV 수리속도 : (건물체력*0.9)/건설시간
//커맨드 센터가 있습니다.
//커맨드 센터 건설시간 : 120초
//커맨드 센터 체력 : 1500
//커맨드 센터 방어력 : 1
//질럿 7마리가 커맨드 센터를 공격합니다.
//SCV 4마리가 커맨드 센터 수리를 시작합니다.
//질럿들이 i번째 공격을 합니다.
//커맨드 센터 체력이 n 남았습니다. (x%)
//....
//커맨드 센터 체력이 0 남았습니다. (0%)
//커맨드 센터가 파괴되었습니다.
//남아있는 건물이 없습니다.
//패배
}
}
}

============================================================================
2-3 마린 스팀팩사용 & 메딕 힐 사용


스팀팩을 쓰고 체력이 떨어진 마린을 메딕이 치료하는 과정을 출력.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{
enum attackStyle
{
Single,
Double
}
static void Main(string[] args)
{
string unitName1 = "마린";
float skillCost1 = 10;
float unitMaxHp1 = 40;
float unitHp1 = unitMaxHp1;
string unitName2 = "메딕";
int maxMana = 20;
int mana = maxMana;
int skillCost2 = 4;
float heal = 5;
int i = 0;
while (i < 4)
{
unitHp1 -= skillCost1;
float per1 = unitHp1 / unitMaxHp1;
i++;
Console.WriteLine("{0}은 스팀팩을 사용하였다. 현재 체력 : {1}/{2} ({3}%)", unitName1, unitHp1, unitMaxHp1, per1);
if(unitHp1 <= 10)
{
break;
}
}
Console.WriteLine("{0}은 {1}에게 힐을 주려고 합니다.", unitName2, unitName1);
int x = 0;
while (x < 5)
{
x++;
string result = mana > skillCost2 ? "힐을 사용합니다." : "마나가 부족합니다.";
mana -= skillCost2;
unitHp1 += heal;
float per1 = unitHp1 / unitMaxHp1;
Console.WriteLine(result);
if (mana < 4)
{
break;
}
Console.WriteLine("{0}의 체력 : {1}/{2} ({3}%)", unitName1, unitHp1, unitMaxHp1, per1);
}
}
}
}

============================================================================
2-4 직업선택

디아블로 직업 선택창 출력.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{
static void Main(string[] args)
{
string class1 = "아마존";
string class2 = "어쌔신";
string class3 = "네크로맨서";
string class4 = "바바리안";
string class5 = "팔라딘";
string class6 = "소서리스";
string class7 = "드루이드";
for (int i = 1; i < 9; i++)
{
if (i == 1)
{
Console.WriteLine("{0}을 선택하셨습니다.", class1);
}
else if (i == 2)
{
Console.WriteLine("{0}을 선택하셨습니다.", class2);
}
else if (i == 3)
{
Console.WriteLine("{0}를 선택하셨습니다.", class3);
}
else if (i == 4)
{
Console.WriteLine("{0}을 선택하셨습니다.", class4);
}
else if (i == 5)
{
Console.WriteLine("{0}을 선택하셨습니다.", class5);
}
else if (i == 6)
{
Console.WriteLine("{0}를 선택하셨습니다.", class6);
}
else if (i == 7)
{
Console.WriteLine("{0}를 선택하셨습니다.", class7);
}
else
{
Console.WriteLine("당신의 선택을 기다리고 있습니다.");
}
}
}
}
}

============================================================================
2-5 열쇠로 포탈소환

지옥문 장치를 사용하여 지옥문 개방
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{
static void Main(string[] args)
{
string dgName = "업화지옥";
int i = 0;
while (i < 4)
{
if (i == 0)
{
string itemName = "깨진 물약병";
switch (itemName)
{
case "지옥문 장치":
Console.WriteLine("지옥문이 열렸습니다.");
break;
default:
Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
break;
}
}
else if (i == 1)
{
string itemName = "악마의 꼬리";
switch (itemName)
{
case "지옥문 장치":
Console.WriteLine("지옥문이 열렸습니다.");
break;
default:
Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
break;
}
}
else if (i == 2)
{
string itemName = "헝겊 조각";
switch (itemName)
{
case "지옥문 장치":
Console.WriteLine("지옥문이 열렸습니다.");
break;
default:
Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
break;
}
}
else if (i == 3)
{
string itemName = "지옥문 장치";
switch (itemName)
{
case "지옥문 장치":
Console.WriteLine("지옥문이 열렸습니다.");
break;
default:
Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
break;
}
}
else;
i++;
}
}
}
}

============================================================================
2-6 드랍등급에 따른 반응

랜덤으로 지정한 확률에 따라 나온 아이템 등급에 따른 반응을 출력.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{enum itemGrade
{
Legendary,
Rare,
Magical,
Normal
}
static void Main(string[] args)
{
string itemName = "드랍템";
Random probab = new Random();
int num = probab.Next(0, 101);
bool isDrop = true;
bool isNormal = (num > 30) && isDrop;
bool isMagical = (num <= 30) && (num > 15) && isDrop;
bool isRare = (num <= 15) && (num > 2) && isDrop;
bool isLegendary = (num <= 2) && isDrop;
if(isNormal == true)
{
Console.WriteLine("Better than nothing.");
}
else if(isMagical == true)
{
Console.WriteLine("Not bad though.");
}
else if(isRare = true)
{
Console.WriteLine("Looks quite nice. It must be useful.");
}
else if(isLegendary = true)
{
Console.WriteLine("Finally! Yes! We made it!");
}
else
{
Console.WriteLine("Keep working.");
}
}
}
}

============================================================================
2-7 신지드로 티모를 때릴 수 있을까

신지드(좌)의 좌표와 티모(우)의 좌표를 가정하여 공격 가능여부를 출력.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Homework000
{
class Program
{
static void Main(string[] args)
{
string unitName = "신지드";
float attackRange = 1.25f;
float sight = 9;
float heroX = 0;
float heroY = 0;
string enemyName = "티모";
float enemyX = 12;
float enemyY = 6;
double a = Math.Pow(enemyX - heroX, 2);
double b = Math.Pow(enemyY - heroY, 2);
double distance = Math.Sqrt(a + b);
bool isAttackAvailable = (distance <= sight) && (distance <= attackRange);
if (isAttackAvailable == false)
{
Console.WriteLine("춤을 춘다.");
}
else if (isAttackAvailable == true)
{
Console.WriteLine("공격한다.");
}
else;
}
}
}

============================================================================
'C# > 수업과제' 카테고리의 다른 글
C#21.03.15.과제 6 (0) | 2021.03.15 |
---|---|
C# 21.03.12~14.과제 5 (0) | 2021.03.12 |
C# 21.03.11.과제 4 (0) | 2021.03.12 |
C# 21.03.10.과제 3 (0) | 2021.03.10 |
C# 과제 21.08.20. 기본 데이터 형식 연습 (0) | 2021.03.08 |