#pragma rtGlobals=1 // Use modern global access method. //////////////////////////////////////////////////////////////////////////////// // Procedure for Bowling //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // // Ctrl+1 データ入力用パネルの表示 // Ctrl+2 全員の成績を解析 // Ctrl+3 すべてのグラフを表示 // Ctrl+6 グラフ、テーブルの破棄 // Ctrl+0 Procedure表示 // //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // 使い方 // // 0.パネルの表示 // Ctrl+1 // 1.人の新規登録 // Name ポップアップで"New"を選ぶ // ダイアログで名前を入力 // 2.データの入力 // 人・日付・何ゲーム目か・投球ごとのスコアを入力する // Action ポップアップで"Input"を選択してActionボタンを押す // 3.データの表示 // 人・日付・何ゲーム目かを入力する // Action ポップアップで"Load"を選択してActionボタンを押す // 4.解析 // 個人の成績を解析 // 人を選択する // Action ポップアップで"Analyze"を選択してActionボタンを押す // 全員の成績を一度に解析 // Ctrl+2 // 5.表示 // Action ポップアップで"Display"を選択してActionボタンを押す // ダイアログで「表示したい成績項目」、「Graph or Table」を順に選択 // すべての項目を表示するときは、 // グラフ Ctrl+3 // 表 Ctrl+4 //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // 拡張 成績項目の増やし方 // // 1. BowlingInitialize 内で // Make/O/T/N=6 Stats // のデータ点数を増やす // Stats[]={"Score","Avg_0","Avg_5","Strike","Spare","Mark"} // に名称を追加する // 2. その解析をおこなう関数を定義 // 3. AnalyzeScore 内で // その解析をおこなう関数を追加 // Wave Score,Avg_0,Avg_5,Strike,Spare,Mark // Sort Game,Game,Score,Avg_0,Avg_5,Strike,Spare,Mark // にそれぞれWaveを追加 // //////////////////////////////////////////////////////////////////////////////// Menu "Bowling" "Panel/1",BowlingPanel() "Analyze All/2",AnalyzeAll() "Display All Graph/3",AllGraph() "Display All Table/4",AllTable() "Kill All Window/6",KillAllWindow() "EditProcedure/S0",DisplayProcedure "BowlingInitialize" BowlingInitialize() End Function/S BowlingInitialize() String folder folder=GetDataFolder(1) NewDataFolder/S/O root:Bowling if(WaveExists(Name)==0) Make/O/T/N=0 Name endif if(WaveExists(Game)==0) Make/O/T/N=0 Game endif Make/O/T/N=6 Stats Stats[]={"Score","Avg_0","Avg_5","Strike","Spare","Mark"} Make/T/O/N=21 Input String/G YearStr,DateStr,GameStr,Number YearStr="2006" DateStr="0401" GameStr="1" Number="20060401001" BowlingPanel() SetDataFolder $folder return "" End //////////////////////////////////////////////////////////////////////////////// //データ入力用パネル //////////////////////////////////////////////////////////////////////////////// Function BowlingPanel() String folder,ctrlname,cmd Variable i,j,xpos,ypos,num folder=GetDataFolder(1) SetDataFolder root:Bowling Wave/T Name,Input SVar YearStr,DateStr,GameStr Input[]="0" Input[20]="" DoWindow/K Bowling NewPanel/W=(10,50,600,160) DoWindow/C Bowling cmd="PopupMenu NamePop value=\"" num=DimSize(Name,0) if(num) for(i=0;i