乱数を使っておみくじゲームを作りましたが、
同じものが続けて3回くらいでることがあります。
毎回、異なるようにすることはできないのでしょうか?
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim lots As Integer
lots = kansu(max)
If lots = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim myrandom = New Random
Return myrandom.Next(i)
End Function
End Class
>毎回、異なるようにする
となればすでに乱数ではありません。
>ことはできないのでしょうか
履歴を配列で覚えておいて、今回出てほしくないものが出たときは再度コールすればいい。
まずは
>毎回、異なるようにする
この仕様をはっきり明文化することが必要です。
>>毎回、異なるようにする
>となればすでに乱数ではありません。
確かにおっしゃるとおりですね。
>ことはできないのでしょうか
>履歴を配列で覚えておいて、今回出てほしくないものが出たときは再度コー>ルすればいい。
この部分のコードを考える必要があるということですね。
>>毎回、異なるようにする
>この仕様をはっきり明文化することが必要です。
同じものが3回以上続けてでないようにしたいのですが
>同じものが3回以上続けてでない
仕様がこれだけならば、
ふたつ前の結果を変数に記憶する機能を追加
(TextBox.Textの左端の1文字だけで済む)
ひとつ前の結果はTextBoxに記憶されている
ことにより
や・や・や
ま・ま・ま
が・が・が
の場合はもう一度処理すればOK
アイデアだけですが・・・
#特別な場合として「ひとつ前」「ふたつ前」の
#記録が存在しない場合について考慮する必要が
#あります
>同じものが3回以上続けてでない
なので、大吉を○、吉を△、凶を×とすると
例1:○△×
例2:○○×
例3:○×○
例4:×○○
はいずれも条件を満たすことになります。
しかし例4の場合、次に○がきたらダメですよね?
というわけで、同じ結果が2回連続ででたとき、
3回目にそれだけでないようにすればいいと思います。
ですので、追加で必要な変数は、2回続けてでたおみくじを
保存する変数を1つ用意すればいいと思います。
(3回目は、その変数以外から選ぶ)
仮に変数をXとすると
X=−1:初期値、連続してない状態
X=0:大吉が2回連続で出た
X=1:吉が2回連続で出た
X=2:凶が2回連続で出た
てな具合でいかがでしょうか?
ありがとうございます。
う〜ん。下記のように考えてみましたが、思うような動きはしません
どこが間違えているのでしょうか?
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim lots As Integer
Dim oldlots As Integer = kansu(max) '変数lotsの直前の変数
Do Until lots <> oldlots '変数とその直前の変数が等しくないときループ 終了
lots = kansu(max)
Loop
If lots = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim myrandom = New Random()
Return myrandom.Next(i)
End Function
End Class
これでもダメですね。
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oldlots As Integer 'lotsの直前の変数
Dim lots As Integer
oldlots = kansu1(max)
lots = kansu2(max)
Do Until lots <> oldlots '変数とその直前の変数が等しくないときループ終了
lots = kansu3(max)
Loop
If lots = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu1(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(i)
End Function
Function kansu2(ByVal i As Integer) As Integer
Dim mydom = New Random()
Return mydom.Next(i)
End Function
Function kansu3(ByVal i As Integer) As Integer
Dim myrandom = New Random()
Return myrandom.Next(i)
End Function
End Class
頭の悪い私でした。
1回目 1回目
oldlots = 0 oldlots = 1
lots = 2 lots = 2
でも下記の式が成立してループは終了するのでした。
Do Until lots <> oldlots '変数とその直前の変数が等しくないときループ終了
すみません。出直してきます
すみません。上記の3つの投稿は無視してください。
自分なりに同じものが2回でないようなコードをつくろうとしていますが、
下記のコードで完成したかな?と思いましたが、意図した動作をしません、
どこが間違っているのかアドバイスいただければ有り難いです
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oldlots As Integer 'lotsの直前の変数
Dim lots As Integer
Do Until lots <> oldlots '変数とその直前の変数が等しくないときループ終了
oldlots = lots
lots = kansu(max)
Loop
If lots = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(i)
End Function
End Class
一部修正しましたが、これでもだめです。
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oldlots As Integer
Dim lots1 As Integer
Dim lots As Integer
lots = kansu(max)
Do Until lots1 <> oldlots '変数とその直前の変数が等しくないときループ終了
oldlots = lots
lots1 = kansu(max)
Loop
If lots = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(i)
End Function
End Class
根本的な問題なようなので、解決のヒントをば。
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> Dim oldlots As Integer 'lotsの直前の変数
二行目にブレークポイントを設定して、ボタンが押されるたびに oldlots 変数がどうなっているかを確認してみましょう。
プロシージャ内で宣言されるローカル変数は、そのプロシージャが終了したときに破棄されますよ。前回の値を保存する変数を、クラス内でプロシージャの外で宣言してみましょう。
次に、『二回同じおみくじが出た』ということを記録する方法ですが、変数は
・前回でた結果 (integer)
・二回連続出ているかどうか (boolean)
この二つを用意したほうが、判りやすいかとおもいます。これらをプロシージャの外で宣言する方法で、がんばってみてください。
shazbotさん、ありがとうございます。
実は下記のようにすると同じ結果が2回続けて出ることはなくなりました。
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Dim oldlots As Integer '前回出た結果
Dim lots As Integer '今回出た結果
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Do
oldlots = lots
lots = kansu(max)
Loop Until lots <> oldlots '変数とその直前の変数が等しくないときループ終了
If lots = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(i)
End Function
End Class
ちなみに・二回連続出ているかどうか (boolean)
の使い方のヒントでもおしえていただけたら嬉しく思います。
処理を、ブレークポイントなりで一行ずつ目で追って、何が行われているのか確認してみましょう。そうすれば、おのずと問題点がわかるはずです。
そのコードだと、問題点は以下のとおり
・一回目、絶対に大吉が出ない(oldlotsの初期値は・・・?)
・二連続で同じ値が出ない(3連続はダメでも、2連続はOKのはず)
解決策を考えて見ましょう。
-ヒント
・oldlotsに初期値を設定する
・おみくじの結果が決まったあと、それがoldlots(今回の結果に更新する前の!)と同じかを調べる。
・同じであった場合、
- これが1回目なの2回目なのか、フラグ(boolean)を立てて識別する。
これ以上のヒントは、もう答えになりそうですが・・・
失礼ですが、スレッドを見る限り、アルゴリズムの基本的な構築ができてないように感じます。紙にフローチャートを書いて考えてみるのもいいとおもいますよ。
Dim oldlots As Integer = -1 が適当なのかな?
後は、わからなくなってしまい、お手上げ、思考不能になりました。
しばらく休んでから、また考えてみようと思ってます。
愚鈍なわたしにアドバイスいただき感謝しております。
shazbotさんへ
おしえていただいた仕様は、ボタン一つのイベントでは実現できないですよね。ちがうでしょうか?
ボタン1つでも複数回押した時の処理として実現できます。
編集 削除>ボタン1つでも複数回押した時の処理として実現できます
そうなのですか?
今、いろいろ調べているのですが難しいものですね。
ただ、Dim oldlots As Integer = -1 は、正解のような気がしますが
いかがでしょうか?
> ただ、Dim oldlots As Integer = -1 は、正解のような気がしますが
正解だと思います。
プログラムから離れて。。。おみくじの紙3枚用意して
1つ前に何が出たかメモしながら3連続出たことが
メモできないって言ってる???
プログラムでは変数にメモするだけなんですが。
1回目なのか2回目なのかのフラグ(boolean)
が理解できないなら、単純に何回連続なのか
数字で覚えたら?
ちがうかもしれませんが、いちおう下記の条件は解決できました
・一回目、絶対に大吉が出ない(oldlotsの初期値は・・・?)
・二連続で同じ値が出ない(3連続はダメでも、2連続はOKのはず)
フラグの使い方がいまいちわからず、こうしたコードになって
しまいました。
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Dim oldlots As Integer = -1 '前々回出た結果
Dim lots As Integer = -1 '前回出た結果
Dim lots2 As Integer '今回出た結果
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Do
oldlots = lots
lots = lots2
lots2 = kansu(max)
Loop Until lots2 <> oldlots '今回と前々回出た結果が等しくないときループ終了
If lots2 = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots2 = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots2 = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(max)
End Function
End Class
Do
oldlots = lots
lots = lots2
lots2 = kansu(max)
Loop Until lots2 <> oldlots '今回と前々回出た結果が等しくないときループ終了
これはまずいでしょう。
1回目のループ処理で、lots2 = oldlots だった場合
2回目のループ処理に入るわけですが、
oldlots、lots、lots2 を書き換えるのはダメでしょう。。
実際に出たおみくじを変数に保存しないと・・
しかもこのプログラムでは、
今回と前々回の結果を比較していますが、仕様では
3連続同じ結果は出ない、ということだったと思いますが?
フローチャートを紙に書いて考えてみましたか?
プログラムをあれこれ書いても残念ながら解決しないと
思いますよ?急がば回れです。
>しかもこのプログラムでは、
>今回と前々回の結果を比較していますが、仕様では
>3連続同じ結果は出ない、ということだったと思いますが?
文法の解釈を誤っていたのに気づきました。
下記のように修正しました。
いちおう意図する動きはしているのですが?
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Dim oldlots As Integer = -1 '前々回出た結果
Dim lots As Integer = -1 '前回出た結果
Dim lots2 As Integer '今回出た結果
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
oldlots = lots
lots = lots2
lots2 = kansu(max)
If lots2 = oldlots Then '今回と前々回出た結果が等しい場合 は、結果の数値が異なるまで今回の結果をループ
Do Until lots2 <> oldlots
lots2 = kansu(3)
Loop
End If
If lots2 = daikiti Then
Label1.Text = "やりました。大吉です"
ElseIf lots2 = kiti Then
Label1.Text = "まあまあ、吉です"
ElseIf lots2 = kyou Then
Label1.Text = "がっかり凶です"
End If
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(i)
End Function
End Class
意図した動きはしていますが?どこがおかしいのでしょうか
Public Class Form1
Dim omikuzi() As String
Dim oldlots As Integer = -1 '前々回の結果
Dim lots As Integer = -1 '前回の結果
Dim lots2 As Integer '今回の結果
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
omikuzi = New String() {"やりました。大吉です", "まあまあ、吉です", "がっかり凶です"}
oldlots = lots
lots = lots2
lots2 = kansu(3)
If lots2 = oldlots Then 'もし今回と前々回の結果が同じなら以下を繰り返す
Do Until lots2 <> oldlots
lots2 = kansu(3)
Loop
End If
Select Case lots2
Case 0
Label1.Text = omikuzi(lots2)
Case 1
Label1.Text = omikuzi(lots2)
Case 2
Label1.Text = omikuzi(lots2)
End Select
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim myrandom = New Random()
Return myrandom.Next(i)
End Function
End Class
>フローチャートを紙に書いて考えてみましたか?
何度も書いて到達したのが上記のコードです。ふーう(^^;)
意図した動きをしているので問題はないと思っているのですが
やはり何かちがうのでしょうか?
もう降参したい気持ちなので
模範のサンプルおしえていただけたら気が楽になりそうです。
もしかしたら私には才能、適性がないのかも
卑下しているわけではありませんが、得て不得手はありますよね。
頭の回転も鈍ってます
あ、私も勘違いしていました。
>同じものが3回以上続けてでないようにしたい
は、連続して3回ではなく、とにかく3回でないような
プログラムでいいってことなんですか?
それでしたら、まさるさんが最後に投稿された
プログラムでも仕様を満たすことになります。
ただし、例えば
1回目:大吉
2回目:吉
だった場合、3回目は大吉は絶対に出ないことになります。
(前々回と今回を比較しているため)
たしかに3回連続で出ることはありませんが、
出てもいい結果(例でいうと3回目の大吉)を省くというのは
いささか問題あると思いますが、いかがでしょうか?
「これでも構わない」となればそれまでですが・・・
> もう降参したい気持ちなので
> 模範のサンプルおしえていただけたら気が楽になりそうです。
この言葉は、質問の回答者に対して失礼です。
ヒントを与えている方々がいらっしゃるのに
「降参」とはいかがなものかと思います。
重要なのは、プログラムを書くことではなく、
フローチャートを書いてみて、どこでどういった条件が
必要か、自分で考えることなのです。
考えることが苦しいとなれば、今後も苦しむだけでしょう。
ちなみに私なら下記の様にプログラミングします。
3回連続して同じ結果がでないようになっております。
大吉→吉→大吉という結果も出ます。
ポイントはラベルに結果を表示した後にアレコレと処理することですね。
もう少し改良すれば、oldlotsを使わなくてもできます。
ちょっと難しいですが、ご自身で考えてみてください。
Public Class おみくじ
Const max As Integer = 3
Const daikiti As Integer = 0
Const kiti As Integer = 1
Const kyou As Integer = 2
Dim omikuzi() As String
Dim oldlots As Integer = -1 ' 前回の結果
Dim lots As Integer = -1 ' 今回の結果
Dim Kinshi As Integer = -1 ' 3回目に出さない結果
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
omikuzi = New String() {"やりました。大吉です", "まあまあ、吉です", "がっかり凶です"}
lots = kansu(max)
If lots = Kinshi Then
Do
lots = kansu(max)
Loop Until lots <> Kinshi
End If
Label1.Text = omikuzi(lots)
If oldlots = lots Then
Kinshi = lots
Else
Kinshi = -1
End If
oldlots = lots
End Sub
Function kansu(ByVal i As Integer) As Integer
Dim mrandom = New Random()
Return mrandom.Next(i)
End Function
End Class
> 意図した動きをしているので問題はないと思っているのですが
> やはり何かちがうのでしょうか?
パターンテストしたら平均で50%くらいはバグを含む結果と出ました。
Dim omikuzi() As String = New String() {"○", "△", "×"}
Dim oldlots As Integer = -1 '前々回の結果
Dim lots As Integer = -1 '前回の結果
Dim lots2 As Integer '今回の結果
''--------------------------------------------------------------------------
Const max As Integer = 3
Dim Kinshi As Integer = -1 ' 3回目に出さない結果
''--------------------------------------------------------------------------
Private m_Target As String = String.Empty
Private m_Double As Boolean = False
''--------------------------------------------------------------------------
Private Enum PG
masaru
singo
maruru
End Enum
Private m_TestPG As PG = PG.masaru '誰のプログラムをテストするか。
Private m_AllOutput As Boolean = False '全てのおみくじ結果を表示するか。
Private m_TestRowCount As Integer
Private m_TestColCount As Integer
Private m_BeforeTestRowCount As Integer
Private m_BeforeTestColCount As Integer
Private m_omikuziAll As String
Private m_TestPattern As Integer(,) = New Integer(,) {{0, 0, 0} _
, {0, 0, 1} _
, {0, 0, 2} _
, {0, 1, 0} _
, {0, 1, 1} _
, {0, 1, 2} _
, {0, 2, 0} _
, {0, 2, 1} _
, {0, 2, 2} _
, {1, 0, 0} _
, {1, 0, 1} _
, {1, 0, 2} _
, {1, 1, 0} _
, {1, 1, 1} _
, {1, 1, 2} _
, {1, 2, 0} _
, {1, 2, 1} _
, {1, 2, 2} _
, {2, 0, 0} _
, {2, 0, 1} _
, {2, 0, 2} _
, {2, 1, 0} _
, {2, 1, 1} _
, {2, 1, 2} _
, {2, 2, 0} _
, {2, 2, 1} _
, {2, 2, 2} _
}
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim strExpect As String
Dim strResult As String
Dim strOutput As String
Dim strOmikujiTmp As String
Dim strTarget As String
Dim blnDouble As Boolean
Dim blnTurkey As Boolean
If m_AllOutput Then
Debug.WriteLine("期待値 結果 合否 (全ての結果)")
Debug.WriteLine("--------------------------------------------")
Else
Debug.WriteLine("期待値 結果 合否 ")
Debug.WriteLine("----------------------")
End If
m_BeforeTestRowCount = -1
m_BeforeTestColCount = -1
For m_TestRowCount = 0 To m_TestPattern.GetLength(0) - 1
'-- テスト結果用変数の初期化
strExpect = String.Empty
strTarget = String.Empty
blnDouble = False
blnTurkey = False
m_omikuziAll = String.Empty
'-- テスト開始条件を揃える
oldlots = -1 '前々回の結果
lots = -1 '前回の結果
''--------------------------------------------------------------------------
oldlots = -1 '前々回の結果
lots = -1 '前回の結果
Kinshi = -1
''--------------------------------------------------------------------------
m_Target = String.Empty
m_Double = False
''--------------------------------------------------------------------------
'-- 判定基準作成
For col As Integer = 0 To m_TestPattern.GetLength(1) - 1
strOmikujiTmp = omikuzi(m_TestPattern(m_TestRowCount, col))
If strTarget = strOmikujiTmp Then
If blnDouble Then
blnTurkey = True
Else
blnDouble = True
End If
Else
blnDouble = False
strTarget = strOmikujiTmp
End If
strExpect &= strOmikujiTmp
Next
'-- テスト
strResult = String.Empty
For m_TestColCount = 0 To m_TestPattern.GetLength(1) - 1
'If m_TestRowCount = 19 - 1 AndAlso m_TestColCount = 1 - 1 Then
' Debug.WriteLine("Break Point")
'End If
Call Button1_Click(Nothing, Nothing)
strResult &= Me.Label1.Text
Next
strOutput = strExpect & " " & strResult & " "
'-- テスト結果の判定
If blnTurkey Then
If strExpect.Substring(0, 2) = strResult.Substring(0, 2) _
AndAlso strExpect <> strResult Then
strOutput = strOutput & "合格 "
Else
strOutput = strOutput & "不合格"
End If
Else
If strExpect = strResult Then
strOutput = strOutput & "合格 "
Else
strOutput = strOutput & "不合格"
End If
End If
If m_AllOutput Then
strOutput &= "(" & m_omikuziAll & ")"
End If
Debug.WriteLine(strOutput)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case m_TestPG
Case PG.masaru
Call masaruPG()
Case PG.singo
Call singoPG()
Case PG.maruru
Call maruruPG()
End Select
End Sub
Sub masaruPG()
'omikuzi = New String() {"○", "△", "×"}
oldlots = lots
lots = lots2
lots2 = kansu(3)
If lots2 = oldlots Then 'もし今回と前々回の結果が同じなら以下を繰り返す
Do Until lots2 <> oldlots
lots2 = kansu(3)
Loop
End If
Select Case lots2
Case 0
Label1.Text = omikuzi(lots2)
Case 1
Label1.Text = omikuzi(lots2)
Case 2
Label1.Text = omikuzi(lots2)
End Select
End Sub
Sub singoPG()
'omikuzi = New String() {"やりました。大吉です", "まあまあ、吉です", "がっかり凶です"}
lots = kansu(max)
If lots = Kinshi Then
Do
lots = kansu(max)
Loop Until lots <> Kinshi
End If
Label1.Text = omikuzi(lots)
If oldlots = lots Then
Kinshi = lots
Else
Kinshi = -1
End If
oldlots = lots
End Sub
Sub maruruPG()
Dim strOmikujiTmp As String
strOmikujiTmp = omikuzi(kansu(3))
If m_Target = strOmikujiTmp Then
If m_Double Then
Do
strOmikujiTmp = omikuzi(kansu(3))
Loop Until m_Target <> strOmikujiTmp
Else
m_Double = True
End If
Else
m_Double = False
End If
m_Target = strOmikujiTmp
Label1.Text = strOmikujiTmp
End Sub
Function kansu(ByVal i As Integer) As Integer
Try
'-- 規定のテストパターン内ならテストパターンを返す
If m_BeforeTestRowCount <> m_TestRowCount _
OrElse m_BeforeTestColCount <> m_TestColCount Then
m_BeforeTestRowCount = m_TestRowCount
m_BeforeTestColCount = m_TestColCount
If m_TestRowCount <= m_TestPattern.GetLength(0) - 1 _
AndAlso m_TestColCount <= m_TestPattern.GetLength(1) - 1 Then
Return m_TestPattern(m_TestRowCount, m_TestColCount)
End If
End If
Dim myrandom As Random = New Random()
Return myrandom.Next(i)
Catch ex As Exception
Debug.WriteLine(ex.Message)
Finally
'-- 全てのおみくじ結果を記録
m_omikuziAll &= omikuzi(kansu)
End Try
End Function
しんごさん、ご指導有り難う。
何とか自力で頑張ってみます。
苦労することがプログラミングの醍醐味であることを
忘れるところでした。
特攻隊長まるるうさんへ
お願いしていないのにバグテストしていただき感謝します。
あなたは、IT業界で働かれているのだと思います。
きっとピカ一の実力をお持ちなのでしょう。
しかし、失礼ですが、お客様に対しても同じように、言葉足らずで
愛想のひとかけらもなくテスト結果をさしあげているのでしょうか?
それではIT業界で働くにはいといろと問題があるのでは?と危惧しています
嫌みではありませんが、私が客ならお断りした人材です
最も、ここは掲示板ですから無関係かもしれませんが、あなたの人間性の一端をかいま見る思いで不愉快でした。
大変失礼かつ無礼なことを書きましたが、あなたがIT業界で今後もお勤めに
なられるのならぜひご自身の在り方を顧みられることをお薦めします。
決したあなたを愚弄した書き込みではないことはわかっていただきたい。
たぶんこれを見ているひとの多くが
>最も、ここは掲示板ですから無関係かもしれませんが、
>あなたの人間性の一端をかいま見る思いで不愉快でした。
という感情をあなた(まさるさん)に持つでしょうね。
そのことはわかっていますか? >まさるさん
>プログラミングの醍醐味
プログラムは基本的に常に未完成です。
俗に言うバグを含んでいます。
それを最初から最後まで一人のプログラマが担当したばあいは
通常とは桁違いに存在すると思います。
現在は「初心者」の段階でデバッグすらまともにできていない
ようですので「テスト工程」などという概念すらないと思いま
すが、普通は全工程の半分くらいのパワーをテストに費やします。
それを変わりにやってもらったのですから感謝こそすれ
「不愉快でした。」
などという言葉を直接返すべきではありません。
この書き込みに対しても「不愉快でした。」という言葉を
いただけそうですが、もう少し広い目で社会を見つめてください。
>それを変わりにやってもらったのですから感謝こそすれ
>「不愉快でした。」
誤解なさらないでください。
私が不愉快に思っていることは、もう少し言葉を添えていただきたかったと思っただけです。(常識の範囲で)
おわかりになるでしょうか?最も基本的な人と人のコミュニケーションです。その部分が彼には欠けているように感じたのです。
(これは決して馬鹿にしてはおりません。そういう個性をお持ちの方もいることは私は経験上知ってます)
その性格が誤解を招いて彼の仕事に悪影響を及ぼしていないかということを危惧して申し上げただけです。
性格悪くても実力があると重宝される世界なんだよねぇ(^^;
いや、しかし、プログラムコードってその人の頭の中が
もろに出ちゃいますよねww。
あ、そうそう。ボクが無愛想なのは常にじゃあ無いですよ?。
過去ログを検索すれば分かると思いますが、懇切丁寧に教えてる
場合ももちろんあります。理由は言わずもがな。
>性格悪くても実力があると重宝される世界なんだよねぇ(^^;
>いや、しかし、プログラムコードってその人の頭の中が
>もろに出ちゃいますよねww。
そのようなことはおっしゃらなかったほうがよかったのではないかと思いますが…誤解されたようで残念です
>あなたの人間性の一端をかいま見る思いで不愉快でした。
そのようなことはおっしゃらなかったほうがよかったのではないかと思います.
今でも上に引用した部分は発言すべきことだった、と思っているんでしょうか?
>その部分が彼には
もう完全に敵視ですね。
感謝の気持ちのかけらもないことがいっそう明らかになってきました。
提供された情報の重要性をわかるだけの力量はないと思いますが、
自分が何を知らないかを把握すべきですよ。
質問者は解決したのであれば、
解決にチェックを入れるのがマナーです。
当初の問題は達成されたと思いますが?
少なくとも私のプログラムコードに対する
まさるさんの投稿時点で解決していたはずです。
仕様を満たしていなければご指摘ください。
解決しているのであれば、これ以上、
この掲示板でやり取りするのは意味がありません。
使用上の注意にも
1.それぞれの掲示板の趣旨にあったものをお書き下さい。
とあります。
以下、個人的感想です。
もし私がまさるさんの立場で、特攻隊長まるるうさんが
バグテストされたら感謝すると思います。
「こういうことができるんだ」
「50%か・・・もっと勉強しよう」
と感じているでしょうね。
この掲示板の書き込みを活かすかどうかは人それぞれです。
面と向かって話しているならともかく、
掲示板でのやり取りということを考えると
特攻隊長まるるうさんの書き込みは何ら問題ないと思います。
問題あると感じるのであれば、自分の書き込みが相手に
不快を与えてなかったか、をまず先に考えるべきです。
以上
>感謝の気持ちのかけらもないことがいっそう明らかになってきました。
>提供された情報の重要性をわかるだけの力量はないと思いますが、
感謝してほしかったのですか、それは気づきませんで申し訳ないです
ごろうさん、突然登場されましたが、ご苦労さまです
お互いに中傷しあうのは止めましょう。<醜いですから>
お互いの幸せのためにもね。
管理人様これ以上の書き込みはいたしません。自重します。m(_ _)m
結局「逆ギレ」状態で退場ですね。
このほうがあとから見てもはっきりするから都合がいいけど・・・
>結局「逆ギレ」状態で退場ですね。
>このほうがあとから見てもはっきりするから都合がいいけど・・・
http://madia.world.coocan.jp/cgi/BBSHelpMe.htm
良識のある社会人ならよくお読み下さい
(もっとも高校生のプログラミングオタクではしかたがないかもしれませんが)
皆様には大変お世話になりました。ありがとうございました。
解決済みですので、これ以上の書き込みはご遠慮ください
ひととおりのプログラムの作り方を体験したら、
次はデバッグ方法の体験が必要ですね。
がんばってください。
>ひととおりのプログラムの作り方を体験したら、
>次はデバッグ方法の体験が必要ですね。
>がんばってください。
暖かいお言葉有り難うございます。うれしいかぎりです。
プログラミングに行き詰まっていた自分は冷静さを失っていたことに
ようやく気づきました。
特攻隊長まるるうさんには、適切なアドバイスを頂きながら間違った思いこみで受け取ってしまったこと本当に申し訳なく思っております。ごめんなさい。
また、管理人さんとこちらの掲示板を閲覧されている皆様には不愉快な思いをさせてしまったことに対して深くお詫びします。
社会人として、いや人間として恥ずかしいかぎりです。
一から出直してきたいと思っております。
もちろん簡単に許していただけるとは思っておりません。
自分なりに反省して、これまでの自分の在り方を見つめ直して参りたいと思っております。
このたびは本当に申し訳ございませんでした。