Add printing of bugs

This commit is contained in:
Andrew Cooper
2022-07-13 08:04:35 +10:00
parent be9f0a92f8
commit 04ec0f8f47
10 changed files with 72 additions and 5 deletions
+8
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Parts;
using BugGame.Resources;
@@ -10,4 +11,11 @@ internal class Bug
public bool IsComplete => _body.IsComplete;
public bool TryAdd(IPart part, out Message message) => _body.TryAdd(part, out message);
public string ToString(string pronoun, char feelerCharacter)
{
var builder = new StringBuilder($"*****{pronoun} Bug*****").AppendLine().AppendLine().AppendLine();
_body.AppendTo(builder, feelerCharacter);
return builder.ToString();
}
}
+14
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -24,4 +25,17 @@ internal class Body : ParentPart
Leg => _legs.TryAddOne(out message),
_ => throw new NotSupportedException($"Can't add a {part.Name} to a {Name}.")
};
public void AppendTo(StringBuilder builder, char feelerCharacter)
{
_neck.AppendTo(builder, feelerCharacter);
builder
.AppendLine(" BBBBBBBBBBBB")
.AppendLine(" B B")
.AppendLine(" B B");
_tail.AppendTo(builder);
builder
.AppendLine(" BBBBBBBBBBBB");
_legs.AppendTo(builder);
}
}
+4 -1
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -5,7 +6,9 @@ namespace BugGame.Parts;
internal class Feelers : PartCollection
{
public Feelers()
: base(6, Message.FeelerAdded, Message.FeelersFull)
: base(2, Message.FeelerAdded, Message.FeelersFull)
{
}
public void AppendTo(StringBuilder builder, char character) => AppendTo(builder, 10, 4, character);
}
+13
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -19,4 +20,16 @@ internal class Head : ParentPart
Feeler => _feelers.TryAddOne(out message),
_ => throw new NotSupportedException($"Can't add a {part.Name} to a {Name}.")
};
public void AppendTo(StringBuilder builder, char feelerCharacter)
{
_feelers.AppendTo(builder, feelerCharacter);
builder
.AppendLine(" HHHHHHH")
.AppendLine(" H H")
.AppendLine(" H O O H")
.AppendLine(" H H")
.AppendLine(" H V H")
.AppendLine(" HHHHHHH");
}
}
-1
View File
@@ -3,5 +3,4 @@ namespace BugGame.Parts;
internal interface IPart
{
string Name { get; }
bool IsComplete { get; }
}
+4 -1
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -5,7 +6,9 @@ namespace BugGame.Parts;
internal class Legs : PartCollection
{
public Legs()
: base(2, Message.LegAdded, Message.LegsFull)
: base(6, Message.LegAdded, Message.LegsFull)
{
}
public void AppendTo(StringBuilder builder) => AppendTo(builder, 6, 2, 'L');
}
+7
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -20,4 +21,10 @@ internal class Neck : ParentPart
Feeler => _head.TryAdd(part, out message),
_ => throw new NotSupportedException($"Can't add a {part.Name} to a {Name}.")
};
public void AppendTo(StringBuilder builder, char feelerCharacter)
{
_head.AppendTo(builder, feelerCharacter);
builder.AppendLine(" N N").AppendLine(" N N");
}
}
+1 -1
View File
@@ -2,7 +2,7 @@ using BugGame.Resources;
namespace BugGame.Parts;
internal class Part
internal class Part : IPart
{
private readonly Message _addedMessage;
private readonly Message _duplicateMessage;
+18 -1
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -23,11 +24,27 @@ internal class PartCollection
if (_count < _maxCount)
{
_count++;
message = _addedMessage.ForQuantity(_count);
message = _addedMessage.ForValue(_count);
return true;
}
message = _fullMessage;
return false;
}
protected void AppendTo(StringBuilder builder, int offset, int length, char character)
{
if (_count == 0) { return; }
builder.Append(' ', offset);
for (var i = 0; i < length; i++)
{
for (var j = 0; j < _count; j++)
{
builder.Append(character).Append(' ');
}
builder.AppendLine();
}
}
}
+3
View File
@@ -1,3 +1,4 @@
using System.Text;
using BugGame.Resources;
namespace BugGame.Parts;
@@ -8,4 +9,6 @@ internal class Tail : Part
: base(Message.TailAdded, Message.TailNotNeeded)
{
}
public void AppendTo(StringBuilder builder) => builder.AppendLine("TTTTTB B");
}