測驗完全五度的小程式…用Ruby寫的。
程式很醜(寫完才知道有proc可以用)
不過是第一個有實用性的程式,聊表記念。

未來目標:
1.GUI化
2.改用porc
3.全音程擴充


#written by juls

def prefect5

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']

keyRandNum = rand(21)
keyRand = keys[keyRandNum]
udArray = ['above','below']
udRandNum = rand(2)
udRand = udArray[udRandNum]
interval= 5
soundNumClac = ((interval-1)*3 - udRandNum*3 + keyRandNum)
puts ''

    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]   

puts 'What is the ' + 'Perfect 5th ' + udRand + ' the key ' + keyRand + ' ?'
puts '(Enter [Q] to quit the test.)'

answer = gets.chomp

if answer.upcase == 'Q'
    STDOUT.flush
    puts "Goodbye!"
else
    if answer.upcase == correctNote.upcase
    puts 'Correct!'
    prefect5
    else
    puts ''
    puts 'Nooop, The Correct answer is ' + correctNote
    prefect5
    end
   
end

end
prefect5


arrow
arrow
    全站熱搜

    juls 發表在 痞客邦 留言(0) 人氣()