ダーツ計算練習

ハードダーツで計算する時にパパっと計算できるように練習アプリを作成

開始ボタンを押すとランダムに「残り」と「3本の各点数」を表示します。
3本の合計点の暗算練習残りの暗算(引き算)を鍛えるのが目的です。

3本の各点数はランダムに表示しますが
1~20までのシングルとトリプルの数だけです。
(キャッチでダブルはない前提)
20,1,5のシングルorトリプルが全体の5割を占めるようにしています。

ダーツアレンジ練習

ダーツのアレンジ練習アプリ

<概要>

このアプリはハードの計算がパパっとできるようになりたい人向けです。

ソフトダーツだと自動計算してくれますが、ハードだと自力計算が基本です。

セオリー通りのアレンジを覚えても実践ではその通りに入らないことがほとんどで周辺ナンバーに入った時に「残りがいくつかわからない!」とパニックになります。リズムも崩れます。

<よくあるパターン>

残り99⇒ 19T狙おう⇒ミスって7T入った

 ⇒「!?(今残りいくつだ!?)」

 

こんな感じで狙いとは違うナンバーに入った時でも対応できる力をつけるために作成しました。

<使い方>

①スタートを押すとランダムで残りナンバーが表示されます(初期値61~170)
②残りナンバーに対するアレンジナンバーを押す
③押したナンバーの通りに入る時もあれば周辺ナンバーに入る時もあります。
※実践では隣に入ったりするのでその再現をしてます。19T狙って7Tに入るとか。6割ミスするようにしてます)
④残りナンバーはあえて自動計算しません。知りたい場合は「残りを見る」ボタンで表示できます。
⑤「次ラウンド」を押すと1本目から投げる状態になります

 01を楽しむゲームではなくアレンジ練習用なのでシングルとトリプルしか用意していません。残りが0になっても何も起きません。バーストしても何も起きません。

ダーツアレンジ表

61~99までのアレンジ表(セパブルダブルアウト)

表の見方
「No」残りナンバー
「狙」狙うといいトリプルナンバー
「20~10」狙い通りに入った場合の残数(かっこ内はミスってシングル入った時の残数)
※赤色は入ったとしても良くないナンバーが残る(ダブル上がりできない)

No 20 19 18 17 16 15 14 13 12 11 10
99 T19 ×                    
98 T20 38
(78)
                   
97 T19 × 40
(78)
                 
96 T20 36
(76)
×                  
95 T19 × 38
(76)
      50
(80)
         
T15
94 T18 × × 40
(76)
               
93 T19 × 36
(74)
×                
92 T20 32
(72)
× ×                
91 T17 × × × 40
(74)
             
90 T18 × × 36
(72)
×              
No 20 19 18 17 16 15 14 13 12 11 10
89 T19 × 32
(70)
× ×              
88 T20 28
(68)
× × ×              
87 T17 × × × 36
(70)
×            
86 T18 × × 32
(68)
× ×            
85 T15 × 28
(66)
× × × 40
(70)
         
T19
84 T20 24
(64)
× × × 36
(68)
×          
T16
83 T17 × × × 32
(66)
× ×          
82 DB × × 28
(64)
× × × 40
(68)
       
T18
T14
81 T19 × 24
(62)
× × × 36
(66)
×        
T15
80 T20 20
(60)
× × × 32
(64)
× ×        
T16
No 20 19 18 17 16 15 14 13 12 11 10
79 T19 × 22
(60)
× 28
(62)
× × × 40
(66)
     
T17
T13
78 T18 × × 24
(60)
× × × 36
(64)
×      
T14
77 T19 × 20
(58)
× × × 32
(62)
× ×      
T15
76 T20 16
(56)
× × × 28
(60)
× × × 40
(64)
   
T16
T12
75 T17 × × × 20
(58)
× × × 32
(62)
×    
T13
74 T14 × × 20
(56)
× × × 32
(60)
× ×    
T18
73 T19 × 16
(54)
× × × 28
(58)
× × × 40
(62)
 
T15
T11
72 T16 12
(52)
× × × 24
(56)
× × × 36
(60)
×  
T12
T20
71 T13 × × × 32
(58)
× × × 20
(54)
× ×  
T17
70 T18 × × 16
(52)
× × × 28
(56)
× × × 40
(60)
T14

T10

No 20 19 18 17 16 15 14 13 12 11 10
69 T19 × 12
(50)
× × × 24
(54)
× × × 36
(58)
×
T15
T11
68 T20 8
(48)
× × × 20
(52)
× × × 32
(56)
× ×
T16
T12
67 T17 × × × 16
(50)
× × × 28
(54)
× × ×
T13
66 T14 × × 12
(48)
× × × 24
(52)
× × × 30
(54)
T18
T12
65 T19 × 8
(46)
× × × 20
(50)
× × × 32
(54)
×
T15
T11
64 T16 4
(44)
× × × 16
(48)
× × × 28
(52)
× ×
T12
T20
63 T13 × × × 12
(46)
× × × 24
(50)
× × ×
T17
62 T10 × × 8
(44)
× × × 20
(48)
× × × 32
(52)
T18
T14
61 T15 × 4
(42)
× × × 16
(46)
× × × 28
(50)
×
T11
T19

 

表にするとアレンジに使えるナンバーが階段上になってた。

こう見ると4ずつズレてアレンジ可能なナンバーがあってセオリー通りだと64はT16狙いをよく見るけどT12,T20もいけるんだなってことがわかった。

UILabelで高さを動的に変えるには

UILabelで高さを動的に変えるには

label.numberOfLines = 0;
label.text = @"text";
[label sizeToFit];

とするだけでなんですがsizeToFitが動かない時があります。
sizeToFitのタイミングが悪いと効きません。
ポイントはテキストを設定した後に行う必要があると言うこと。
テキスト設定前にsizeToFitを行なっても意味がありません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	static NSString *cellIdentifier = @"Cell";
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
	if (cell == nil) {
		cell = [self cellWithReuseIdentifier:CellIdentifier];
	}
	UILabel *titleLabel = (UILabel *)[cell viewWithTag:1];
	titleLabel.text = @"タイトル";
	[titleLabel sizeToFit];    // ここ大事!!  titleLabelにテキストを設定した後にsizeToFitをする
	return cell;
    
}

// セルをカスタムする
- (UITableViewCell *)cellWithReuseIdentifier:(NSString *)identifier
{
	CGRect	frame = CGRectMake(0.0, 0.0, 320.0, 120.0);
	UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
	
	//subview
	UILabel		*label;
	frame = CGRectMake(5.0, 7.0, 200.0, 30.0);
	label = [[UILabel alloc] initWithFrame:frame];
	label.tag = 1;
	label.numberOfLines = 0;
	label.font = [UIFont boldSystemFontOfSize:14.0];
	[cell.contentView addSubview:label];
    return cell;
}

このサンプルコードではカスタムのセルを作るのにcellWithReuseIdentifierメソッドにてUILabelの設定を行なっていますがもしこのタイミングで[label sizeToFit]を行なってその後にcellForRowAtIndexPathメソッド にてlabel.text = @"text"だけをやっていると思い通りにいかなくなります。

iTunes Connectでスクリーンショットの入れ替えができなくなった

2013/1/9のアップルの開発者向けニュースにスクリーンショット更新に関する内容が出てた
News - Apple Developer

今まで審査通過後でもスクリーンショットの入れ替えはできたけどついにそれができなくなった模様。
100万ダウンロード達成!!とか喜びのスクリーンショットがもうできなくなったってこと。
審査の時は健全な画像を使って通過後にNGな画像を入れる奴が出てきたとか?

一部のバカタレのせいで制限の線引が広くなってまともにやってる人間が苦労するっていうのはどの世界でもあるね。

そういえば少し前までApp Storeランキングのトップ100に必ずエロ系が入ってたけど最近トップ300まで見ても全く入ってないけどアップルが掃除したのかな?

XCodeでSVNエラー時の対処

XCodeでソースを管理するのにSVNが使えますがうまく行かない時があります。

一番初めにソースをSVNへImportしようとするとこのようなエラーに遭遇する時があります。

エラー内容
Authentication realm:
Password for 'test':
Authentication realm:
Username: test: Can't read stdin: End of file found

解決方法は以下のサイトを参考にしました。
http://akabeko.me/blog/2011/09/xcode-4-svn/
大変助かりました。


これが起きる原因はOrganizerでUsernameとPasswordを入れてもこれが効いてない時があるみたいでターミナルからsvn import コマンドでソースをインポートさせその時に聞いてくるUsernameとPasswordを一回入れるとOrganizerで入れたUsernameとPasswordが有効になるというよくわからない仕様?があるみたいです。

複数人で開発する時に別のメンバーも同様の問題が起きた場合に同じような回避をする必要があります。
別のメンバーはソースを丸ごと一式インポートする必要がなくとにかくUsernameとpasswordを一回いれればいいので
svn list svn://xxx〜のコマンドで打てばUsernameとpasswordを聞いてくれるのでこれで解決します。

もしsvn listでなにも聞いてこずソースの一覧が表示されるようであればどこか適当なところにフォルダを作ってそこにtest.txt(中身空っぽ)を作って
ターミナルでそのフォルダに移動し以下のコマンドを実行すればUsernameとpasswordを聞いてくるはずです。
svn import -m "Importing XXXX" http://example.com/svn/example/trunk/XXXX