mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2026-06-22 14:51:43 -07:00
Add printing of bugs
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,5 +3,4 @@ namespace BugGame.Parts;
|
||||
internal interface IPart
|
||||
{
|
||||
string Name { get; }
|
||||
bool IsComplete { get; }
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
Reference in New Issue
Block a user