Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
114
Task/Mastermind/FreeBASIC/mastermind.basic
Normal file
114
Task/Mastermind/FreeBASIC/mastermind.basic
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
'--- Declaration of global variables ---
|
||||
Dim As String colors(1 To 4) => {"A", "B", "C", "D"}
|
||||
Dim Shared As Integer nr, ub', numlet=4, lencod=4
|
||||
Dim Shared As String*4 master, pz
|
||||
ub = Ubound(colors)
|
||||
nr = 0
|
||||
|
||||
'--- SUBroutines and FUNCtions ---
|
||||
Sub Encabezado
|
||||
Dim As String dup
|
||||
Color 11: Print "Welcome to Mastermind"
|
||||
Print "=====================" + Chr(13) + Chr(10) : Color 15
|
||||
Print "You will need to guess a random code."
|
||||
Print "For each guess, you will receive a hint:"
|
||||
Print "X - denotes a correct letter,"
|
||||
Print "O - denotes a letter in the original"
|
||||
Print " string but a different position."
|
||||
Print "You have 12 attempts."
|
||||
Print "Duplicates are not allowed." + Chr(10)
|
||||
Print "Good luck!" + Chr(10) + Chr(10) : Color 7
|
||||
End Sub
|
||||
|
||||
Sub showresult(test() As String, place1 As Byte, place2 As Byte, place3 As Byte)
|
||||
Dim As Integer r, n1, n2, n3
|
||||
Print Using "##: "; nr;
|
||||
For r = 1 To Ubound(test)
|
||||
Print test(r);
|
||||
Next R
|
||||
Print " : ";
|
||||
For n1 = 1 To place1
|
||||
Print "X"; " ";
|
||||
Next N1
|
||||
For n2 = 1 To place2
|
||||
Print "O"; " ";
|
||||
Next N2
|
||||
For n3 = 1 To place3
|
||||
Print "-"; " ";
|
||||
Next N3
|
||||
Print : Print
|
||||
End Sub
|
||||
|
||||
Sub Inicio
|
||||
Dim As Integer mind(ub), rands(ub)
|
||||
Dim As Integer n, aleat
|
||||
Dim As Boolean repeat = false
|
||||
|
||||
For n = 1 To ub
|
||||
While true
|
||||
aleat = (Rnd * (ub-1)) + 1
|
||||
If rands(aleat) <> 1 Then
|
||||
mind(n) = aleat
|
||||
rands(aleat) = 1
|
||||
Exit While
|
||||
End If
|
||||
Wend
|
||||
Next n
|
||||
|
||||
For n = 1 To ub
|
||||
Mid(master,n,1) = Chr(64 + mind(n))
|
||||
pz &= Chr(64 + mind(n))
|
||||
Next n
|
||||
End Sub
|
||||
|
||||
|
||||
'--- Main Program ---
|
||||
Randomize Timer
|
||||
Cls
|
||||
Dim As Integer guesses = 12
|
||||
Encabezado
|
||||
Inicio
|
||||
Color 15: Print pz : Color 7
|
||||
Do
|
||||
Dim As Integer n, p, d, x, posic
|
||||
Dim As Integer places(1 To 2), place1, place2, place3
|
||||
Dim As String*4 testbegin
|
||||
Dim As String test(ub), mastertemp, tmp
|
||||
Dim As Boolean flag = True
|
||||
|
||||
For p = 1 To Ubound(places)
|
||||
places(p) = 0
|
||||
Next p
|
||||
nr += 1
|
||||
Input "Your guess (ABCD)? " , testbegin
|
||||
For d = 1 To Ubound(test)
|
||||
test(d) = Mid(testbegin,d,1)
|
||||
Next d
|
||||
|
||||
For n = 1 To Ubound(test)
|
||||
If Ucase(test(n)) <> Mid(master,n,1) Then flag = False
|
||||
Next n
|
||||
If flag = True Then
|
||||
Color 10: Print !"\nWell done! You guess correctly." : Sleep : Exit Do
|
||||
Else
|
||||
For x = 1 To Len(master)
|
||||
If Ucase(test(x)) = Mid(master,x,1) Then places(1) += 1
|
||||
Next x
|
||||
mastertemp = master
|
||||
For p = 1 To Ubound(test)
|
||||
posic = Instr(mastertemp, Ucase(test(p)))
|
||||
If posic > 0 Then
|
||||
tmp = mastertemp
|
||||
mastertemp = Left(tmp,posic-1) + Mid(tmp, posic+1, Len(tmp)-1)
|
||||
places(2) += 1
|
||||
End If
|
||||
Next p
|
||||
End If
|
||||
place1 = places(1)
|
||||
place2 = places(2) - place1
|
||||
place3 = Len(master) - (place1 + place2)
|
||||
showresult(test(), place1, place2, place3)
|
||||
Loop Until nr = guesses
|
||||
Color 14: Print "The correct combination was: "; pz
|
||||
Color 7: Print !"\nEnd of game"
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue