Imports System.IO, System.Text Public Class Form1 Dim juniritu(4) As Double Dim ram As New System.Random Dim gendani As Integer Dim genpt As Integer Dim saishudani(11) As Integer Dim saishupt(11) As Integer Dim saikoudanke(11) As Integer Dim saikoudan As Integer Dim siaisu As Integer Dim simyukai As Integer Dim shutu = Path.Combine(Application.StartupPath, "shutu.txt") Dim fs2 As FileStream Dim sw As StreamWriter Sub shukei() Double.TryParse(Text1位率.Text, juniritu(1)) Double.TryParse(Text2位率.Text, juniritu(2)) Double.TryParse(Text3位率.Text, juniritu(3)) Double.TryParse(Text4位率.Text, juniritu(4)) Integer.TryParse(Text試合数.Text, siaisu) Integer.TryParse(Textシミュ回数.Text, simyukai) For i As Integer = 0 To 11 saishudani(i) = 0 saishupt(i) = 0 saikoudanke(i) = 0 Next For i As Integer = 1 To simyukai gendani = Numeric段位.Value Integer.TryParse(Text現pt.Text, genpt) saikoudan = gendani For j As Integer = 1 To siaisu genpt += siai1pt(gendani, siai1juni()) shoukoudan() If utistop() Then Exit For End If Next saishudani(gendani) += 1 saishupt(gendani) += genpt saikoudanke(saikoudan) += 1 Next listhyouji() End Sub Function siai1juni() As Integer Dim p As Double = ram.NextDouble For i As Integer = 1 To 4 p -= juniritu(i) If p < 0 Then Return i End If Next Return 4 End Function Function siai1pt(ByVal dani As Integer, ByVal juni As Integer) As Integer Dim bairitu As Double = 1 If Combo東風東南.Text = "東南戦" Then bairitu = 1.5 End If Select Case juni Case 1 '1位 Select Case Combo卓レベル.Text Case "一般卓" Return 30 * bairitu Case "上級卓" Return 40 * bairitu Case "特上卓" Return 50 * bairitu Case "鳳凰卓" Return 60 * bairitu End Select Case 2 '2位 Select Case Combo卓レベル.Text Case "一般卓" Return 0 Case "上級卓" Return 10 * bairitu Case "特上卓" Return 20 * bairitu Case "鳳凰卓" Return 30 * bairitu End Select Case 3 '3位 Return 0 Case 4 '4位 Return -1 * (dani + 2) * 10 * bairitu End Select End Function Sub shoukoudan() If genpt < 0 Then If gendani >= 1 Then gendani -= 1 '降段 genpt = gendani * 200 Else genpt = 0 End If End If If (gendani = 0 And genpt >= 100) Or (gendani >= 1 And genpt >= gendani * 400) Then '昇段 gendani += 1 saikoudan = Math.Max(saikoudan, gendani) genpt = gendani * 200 End If End Sub Function utistop() As Boolean '一定段位に達したら打ち終わり Dim ke As Boolean = False Select Case Combo卓レベル.Text Case "一般卓", "上級卓" If gendani >= 4 Then ke = True End If Case "特上卓" If gendani <= 3 Or gendani >= 7 Then ke = True End If Case "鳳凰卓" If gendani <= 6 Or gendani >= 11 Then ke = True End If End Select Return ke End Function Sub listhyouji() 'リストボックスに結果表示 ListBox1.Items.Clear() ListBox1.Items.Add("段" & ControlChars.Tab & "最終段位" & ControlChars.Tab & "最終pt" & ControlChars.Tab & "最高到達段") Dim saiteidan As Integer Dim saikodan As Integer Dim heikindan As Double = 0 Select Case Combo卓レベル.Text Case "一般卓", "上級卓" saiteidan = 0 saikodan = 4 Case "特上卓" saiteidan = 3 saikodan = 7 Case "鳳凰卓" saiteidan = 6 saikodan = 11 End Select For i As Integer = saiteidan To saikodan ListBox1.Items.Add(i & "段" & ControlChars.Tab & saishudani(i) / simyukai & ControlChars.Tab & saishupt(i) / saishudani(i) & ControlChars.Tab & saikoudanke(i) / simyukai) heikindan += i * saishudani(i) Next heikindan /= simyukai ListBox1.Items.Add("平均段位" & ControlChars.Tab & heikindan) End Sub Sub kakikomi() Try fs2 = New FileStream(shutu, FileMode.Append) sw = New StreamWriter(fs2, Encoding.GetEncoding("Shift_jis")) For i As Integer = 0 To ListBox1.Items.Count - 1 sw.WriteLine(ListBox1.Items(i)) Next sw.Close() Catch ex As FileNotFoundException Label9.Text = "ファイルが存在しません" End Try End Sub Private Sub Button集計_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button集計.Click shukei() If Check書き込み.Checked Then kakikomi() End If End Sub Private Sub Button書き込み_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button書き込み.Click kakikomi() End Sub End Class