close
update:
1. 增加了分數計算模式,可以自訂幾分結束測驗
但答錯時分數自動歸零
2. 把音程名稱陣列套進去了,但目前還沒用到。
(光想大三小三和弦的例外就有得搞的了…)
3. 把程式寫的好看一點點了,把def先拿掉了,還是不會用proc.
下版想新增的功能:
1. 其它的音程(依序為完全四度、大小三度………)
ps:一度八度是放好看的…這種英打功能應該沒人要吧…
2. GUI化…吧…
電腦裡沒裝ruby,想要exe檔的,我在想辦法放上來吧。
有什麼需要的新功能或是建議也歡迎多多指教~
#interval testing program v.0.2
#written by juls
keys = ['Bb','B','B#','Cb','C','C#','Db','D','D#','Eb','E',
'E#','Fb','F','F#','Gb','G','G#','Ab','A','A#']
extraKeys = keys + ['F##','Bbb']
rightAns = 0
answer = 'a'
puts 'How many questions would you like to do? '
puts 'a. 5 questions'
puts 'b. 12 questions'
puts 'c. 24 questions'
role = gets.chomp
if role == 'a'
rolenum = 5
elsif role == 'b'
rolenum = 12
elsif role == 'c'
rolenum = 24
else
puts 'Please enter a valid option'
end
while rightAns < rolenum and answer.upcase != 'Q'
keyRandNum = rand(21)
keyRand = keys[keyRandNum]
udArray = ['above','below']
udRandNum = rand(2)
udRand = udArray[udRandNum]
interval= 5
soundNumClac = ((21*udRandNum - (interval-1)*3).abs + keyRandNum)
puts ''
intervalArray = ['Union & Octave','Major and minor 2nd','Major & minor 3rd',
'Perfect 4th','Prefect 5th','Major and minor 6th',
'Major and minor 7th']
intervalName = intervalArray[(interval-1)]
puts 'What is the ' + intervalName + ' ' + udRand + ' the key ' + keyRand + ' ?'
puts '(Enter [Q] to quit the test.)'
answer = gets.chomp
if udRandNum == 0 and keyRandNum == 0
soundNum = (soundNumClac + 1)%21
elsif udRandNum == 0 and keyRandNum == 1
soundNum = (soundNumClac + 1)%21
elsif udRandNum == 0 and keyRandNum == 2
keys = extraKeys
soundNum = 21
elsif udRandNum == 1 and keyRandNum == 12
keys = extraKeys
soundNum = 22
elsif udRandNum == 1 and keyRandNum == 13
soundNum = (soundNumClac - 1)%21
elsif udRandNum == 1 and keyRandNum == 14
soundNum = (soundNumClac - 1)%21
else
soundNum = soundNumClac%21
end
correctNote = keys [soundNum]
if answer.upcase == 'Q'
STDOUT.flush
puts 'Goodbye!'
else
if answer.upcase == correctNote.upcase
rightAns = rightAns + 1
if rightAns <= 1
point = 'point'
else
point = 'points'
end
puts 'Correct! Your got ' + rightAns.to_s + ' ' + point +' now.'
else
puts ''
puts 'Nooop, The Correct answer is "' + correctNote + '"'
puts 'Sorry, your score have back to ZERO. >_<'
rightAns = 0
end
end
end
if rightAns == rolenum
puts 'Congradulation! You have pass the test!! ^___^'
end
1. 增加了分數計算模式,可以自訂幾分結束測驗
但答錯時分數自動歸零
2. 把音程名稱陣列套進去了,但目前還沒用到。
(光想大三小三和弦的例外就有得搞的了…)
3. 把程式寫的好看一點點了,把def先拿掉了,還是不會用proc.
下版想新增的功能:
1. 其它的音程(依序為完全四度、大小三度………)
ps:一度八度是放好看的…這種英打功能應該沒人要吧…
2. GUI化…吧…
電腦裡沒裝ruby,想要exe檔的,我在想辦法放上來吧。
有什麼需要的新功能或是建議也歡迎多多指教~
#interval testing program v.0.2
#written by juls
keys = ['Bb','B','B#','Cb','C','C#','Db','D','D#','Eb','E',
'E#','Fb','F','F#','Gb','G','G#','Ab','A','A#']
extraKeys = keys + ['F##','Bbb']
rightAns = 0
answer = 'a'
puts 'How many questions would you like to do? '
puts 'a. 5 questions'
puts 'b. 12 questions'
puts 'c. 24 questions'
role = gets.chomp
if role == 'a'
rolenum = 5
elsif role == 'b'
rolenum = 12
elsif role == 'c'
rolenum = 24
else
puts 'Please enter a valid option'
end
while rightAns < rolenum and answer.upcase != 'Q'
keyRandNum = rand(21)
keyRand = keys[keyRandNum]
udArray = ['above','below']
udRandNum = rand(2)
udRand = udArray[udRandNum]
interval= 5
soundNumClac = ((21*udRandNum - (interval-1)*3).abs + keyRandNum)
puts ''
intervalArray = ['Union & Octave','Major and minor 2nd','Major & minor 3rd',
'Perfect 4th','Prefect 5th','Major and minor 6th',
'Major and minor 7th']
intervalName = intervalArray[(interval-1)]
puts 'What is the ' + intervalName + ' ' + udRand + ' the key ' + keyRand + ' ?'
puts '(Enter [Q] to quit the test.)'
answer = gets.chomp
if udRandNum == 0 and keyRandNum == 0
soundNum = (soundNumClac + 1)%21
elsif udRandNum == 0 and keyRandNum == 1
soundNum = (soundNumClac + 1)%21
elsif udRandNum == 0 and keyRandNum == 2
keys = extraKeys
soundNum = 21
elsif udRandNum == 1 and keyRandNum == 12
keys = extraKeys
soundNum = 22
elsif udRandNum == 1 and keyRandNum == 13
soundNum = (soundNumClac - 1)%21
elsif udRandNum == 1 and keyRandNum == 14
soundNum = (soundNumClac - 1)%21
else
soundNum = soundNumClac%21
end
correctNote = keys [soundNum]
if answer.upcase == 'Q'
STDOUT.flush
puts 'Goodbye!'
else
if answer.upcase == correctNote.upcase
rightAns = rightAns + 1
if rightAns <= 1
point = 'point'
else
point = 'points'
end
puts 'Correct! Your got ' + rightAns.to_s + ' ' + point +' now.'
else
puts ''
puts 'Nooop, The Correct answer is "' + correctNote + '"'
puts 'Sorry, your score have back to ZERO. >_<'
rightAns = 0
end
end
end
if rightAns == rolenum
puts 'Congradulation! You have pass the test!! ^___^'
end
全站熱搜
留言列表