ねた元→東方算程譚:ほのぼの無間地獄
この飽食の時代にいつまでも食べ続けたらメタボっちゃいますw
Public Class Goat
Private _name As String
Public ReadOnly Property Name() As String
Get
Return _name
End Get
End Property
Private _eatMailCount As Integer = 0
Public Sub New(ByVal name As String)
Me._name = name
End Sub
Public Sub SendMail(ByVal [to] As Goat, ByVal mail As String)
[to].GotMail(Me, mail)
End Sub
Public Sub GotMail(ByVal [from] As Goat, ByVal mail As String)
System.Console.WriteLine("{0}からおてがみついた", from.Name())
If Me.EatMail(mail) Then
Dim reply As String = MakeReply()
System.Console.WriteLine("「{0}」", reply)
SendMail(from, reply)
End If
End Sub
Public Function EatMail(ByVal mail As String) As Boolean
If Me._eatMailCount < 100 Then
Me._eatMailCount += 1
Me.FizzBuzz()
System.Console.WriteLine("{0}たらよまずにたべた", Me.Name())
Return True
Else
System.Console.WriteLine("{0}:「もうたべれないメェ・・・。」", Me.Name())
Return False
End If
End Function
Private Function MakeReply() As String
System.Console.WriteLine("しぃかたがないのでおぉてがみかぁいた")
Return "さっきのてがみのごようじなあに?"
End Function
Private Sub FizzBuzz()
If Me._eatMailCount Mod 3 = 0 AndAlso Me._eatMailCount Mod 5 = 0 Then
System.Console.WriteLine("{0}:「{1}」", Me.Name(), "FizzBuzz")
ElseIf Me._eatMailCount Mod 3 = 0 Then
System.Console.WriteLine("{0}:「{1}」", Me.Name(), "Fizz")
ElseIf Me._eatMailCount Mod 5 = 0 Then
System.Console.WriteLine("{0}:「{1}」", Me.Name(), "Buzz")
Else
System.Console.WriteLine("{0}:「{1}枚目食べるメェ!」", Me.Name(), Me._eatMailCount.ToString)
End If
End Sub
Public Shared Sub Main()
Dim white As Goat = New Goat("白ヤギさん")
Dim black As Goat = New Goat("黒ヤギさん")
white.SendMail(black, "ういーっす")
End Sub
End Class
多分、止まると思うんだけど・・・。(未検証で上げるなと。)