Nintendo Switch 版 ソフト プチコン4で遊べる疑似 3D シューティングゲーム EX-RAISE EMOTION

2021/03/14(Sun) 19:34:26
プチコン4 SmileBASIC ダウンロード版 | My Nintendo Store(マイニンテンドーストア)
https://store-jp.nintendo.com/list/software/70010000010547.html

2021/03/14(Sun) 19:35:05
Nintendo Switch(ニンテンドースイッチ)でプログラミング | プチコン4 SmileBASIC
https://www.petc4.smilebasic.com/

上記ツイートで見つけた Nintendo Switch 版ソフト プチコン4で遊べる疑似 3D シューティングゲーム EX-RAISE EMOTION をダウンロードしました。
私はシューティングゲームが苦手ですが、R スティックでホーミング機能を使ってターゲットをマークしながら、L,R ボタンを押しっぱなしで敵を倒すと、エンディングまでたどり着けました。ゲームのクォリティは市販ソフトと引けを取りません。すごい技術力ですね!完成版が楽しみです。

プログラム MAIN.PRG の先頭に書かれている開発に使用したソフトや素材は、参考になります。

2021/03/14(Sun) 19:36:33
Nintendo Switchで撮影した画面写真や動画を、スマートデバイスやPCにお手軽に転送できるようになりました。 | トピックス | Nintendo
https://topics.nintendo.co.jp/article/adab1919-feac-4167-9f3e-40107ba1348e

Nintendo Switch から iPhone に画像を転送するには、上記 URL、任天堂のサイトを参考にしました。

最後にスクリーンショットを載せておきます。

スタート画面
ゲーム画面
エンディング画面

WWDC、E3、Objective-C のブロックと変数

WWDC 2012 基調講演が、11日午前10時 (日本時間、翌12日午前2時) に開催されました。Mac Book Air / Pro、iOS 6、OS X Mountain Lion の発表がありましたが、一番の関心は、Retina ディスプレイ MacBook Pro の発表です。iPadiPhone アプリ開発のために、iMac 27 インチを使用してきましたが、Retina ディスプレイ MacBook Pro でも問題なさそうです。所有してる iMac (Mid 2010) 27 インチは、Thunderbolt、USB 3.0 に対応していないので、購入時期も迫ってきています。Retina ディスプレイ iMac が発表されていたら、間違いなく購入していました。もう一年、我慢しようか、悩みどころです。

基調講演は、Apple のサイト

Apple - Apple Events - Apple Special Event March 2012
http://events.apple.com.edgesuite.net/123pibhargjknawdconwecown/event/index.html

で見れます。Podcast でも配信されています。

iTunes - Podcast - Apple Inc.「Apple Keynotes」
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665
iTunes - Podcast - Apple Inc.「Apple Keynotes (1080p)」
http://itunes.apple.com/jp/podcast/apple-keynotes-1080p/id509310064
iTunes - Podcast - Apple Inc.「Apple Keynotes (HD)」
http://itunes.apple.com/jp/podcast/apple-keynotes-hd/id470664050

1080p、HD 版も配信されています。

E3 も開催されていました。

E3 2012 - GameSpot.com
http://e3.gamespot.com/

上のサイト、左上の赤の背景に白色の文字で E3 2012 と表示されている部分をクリックし、Press Conferences を選ぶとそれぞれの基調講演を見ることができます。また、任天堂の基調講演は

任天堂 E3 2012情報 | E3レポート
http://www.nintendo.co.jp/n10/e3_2012/report/index.html

でも見れます。

以前、[id:KYoshiaki:20120429] iCloud プログラミングで書いた

Creating iOS 5 Apps: Develop and Design

Creating iOS 5 Apps: Develop and Design

[Kindle 版] と復習のために買った

Objective-C Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)

Objective-C Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)

[Kindle 版] を読み終えました。

Blocks とスコープ外の変数について、理解が深まりました。

typedef void (^ArrayEnumerationBlock)(id, NSUInteger, BOOL *);
ArrayEnumerationBlock devowelizer;
NSMutableArray *newStrings = [NSMutableArray array];
devowelizer = ^(id string, NSUInteger i, BOOL *stop) {
NSMutableString *newString = [NSMutableString stringWithString:string];
for (NSString *s in vowels) {
NSRange fullRange = NSMakeRange(0, [newString length]);
[newString replaceOccurrencesOfString:s withString:@"" options:NSCaseInsensitiveSearch range:fullRange];
}
[newStrings addObject:newString];
};
[oldStrings enumerateObjectsUsingBlock:devowelizer];

上のように、block 内で

[newStrings addObject:newString];

とスコープ外の変数 newStrings の内容を変更することができます。これは、メソッドを呼んでいるからです。プロパティで代入する場合も、同じです。

typedef void (^SampleBlock)();
__block NSString *two = [NSString stringWithString:@"two"];
SampleBlock sampleBlock;
FooClass *fooClass;
fooClass = [[FooClass alloc] init];
sampleBlock = ^() {
NSString *three = [NSString stringWithString:@"three"];
fooClass.foo = [NSString stringWithString:@"Orange"];
two = three;
changeValue(8);
};
sampleBlock();

ブロック内で

fooClass.foo = [NSString stringWithString:@"Orange"];

と代入することができます。ここでは、説明しやすいように

self.foo = bar;

とします。

実際には、ドット演算子を使ったプロパティは

The Objective-C Programming Language: Declared Properties
https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1
▼ Declared Properties
▼ Property Declaration and Implementation
Property Declaration
Key-Value Coding Programming Guide: Key-Value Coding Fundamentals
https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/BasicPrinciples.html#//apple_ref/doc/uid/20002170-BA
▼Key-Value Coding Fundamentals
Dot Syntax and Key-Value Coding

を利用しているので

[self setFoo:bar];

または

[self setValue:bar forKey:@"foo"];

と同一です。故にメソッドを使っているので、block 内で代入できます。

foo = bar;

は、block 内で使えないので注意してください。foo が Objective-C のオブジェクト、または int、double などのスカラー型いずれの場合でも、__block を宣言しない限り、ブロック内では代入できません。

sample(bar);

上のような C の関数は、ブロック内で使えます。

結局、Cの関数、Objective-C の method は、ブロック内で使うことができます。また、プロパティを使ったドット表記も、実際には method を使っているので、ブロック内で使えます。ブロック内でスコープ外の変数に = (イコール) を使った代入は、__block を宣言しないと使えません。

サンプルとして zip ファイルを公開します。

VowelMovement.zip
http://kyoshiaki.sakura.ne.jp/osx/Sample/VowelMovement.zip
Creating iOS 5 Apps: Develop and Design

Creating iOS 5 Apps: Develop and Design

[Kindle 版] で見つけた面白い Blocks の使い方のサンプルも下記 URL で公開します。

Weights.zip
http://kyoshiaki.sakura.ne.jp/osx/Sample/Weights.zip

サンプルは、[ Creating iOS 5 Apps: Develop and Design ] [Kindle 版] のソースから、面白い使い方の箇所を抜き出して修正したものです。

//
//	Weights.m
//
- (void)processWeightEntryUsingBlock:(void (^)(NSNumber*)) block
{
NSLog(@"Weights.entries: %@", self.entries);
for (NSNumber* entry in self.entries) {
block(entry);
}
}
//
//	States.m
//
-(void)doStates
{
NSMutableArray *array;
array = [NSMutableArray array];
[self.weights processWeightEntryUsingBlock:^(NSNumber *number) {
int value;
NSNumber *num;
value = [number intValue];
num = [NSNumber numberWithInt:value*2];
[array addObject:num];
}];
NSLog(@"processWeightEntryUsingBlock: %@", array);
}

E3、WWDC、ニンテンドー3DSの本体機能更新、プチコン上でのファイルの送受信

毎年恒例の E3 や WWDC など、イベント尽くしでしたね。

最初に WWDC から

Apple - Press Info - Apple to Unveil Next Generation Software at Keynote Address on Monday, June 6
http://www.apple.com/pr/library/2011/05/31wwdc.html

上記 URL のように、あらかじめ内容が告知された珍しい基調講演でした。

基調講演は、アップルのサイト

Apple - Apple Events - Apple Special Event June 2011
http://events.apple.com.edgesuite.net/11piubpwiqubf06/event/

で、ストリーミングで見ることができます。iTunesPodcast でも

Apple Keynotes
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

配信されています。

Lion、iOS 5、iCloud などの発表がありましたが、一番興味を引いたのは iCloud です。NDA (秘密保持契約) で詳しくは話せないのですが、公開している自作ソフトにいろいろ利用できそうです。自作の Twitter アプリも作り直そうと思っています。その前に、マルチタスキングに対応した iPadRSS リーダーを iTunes Connect に申請しないといけないのですが!

次は E3 にについてです。

E3, E3 2011 - GameSpot.com
http://e3.gamespot.com/

上記ページの上部、水色の部分 ‘Videos’ にマウスカーソルを合わせると下のようなメニューが表示されます。

Press Conferences
・Microsoft
・Sony
・Nintendo
・EA
・Ubisoft

見たい会社名をクリックすることで基調講演を見ることができます。

また、同時通訳版 任天堂プレゼンテンションは

任天堂 E3 2011情報
http://www.nintendo.co.jp/n10/e3_2011/01/index.html

で見ることができます。任天堂Wii U、Sony の Play Station Vita、どちらも楽しみですね!

任天堂 E3 2011情報 - Wii U
http://www.nintendo.co.jp/n10/e3_2011/02/index.html
PlayStation®Vita | プレイステーション® オフィシャルサイト
http://www.jp.playstation.com/psvita/

ニンテンドー 3DS の ‘Nintendo eShop’ 用 本体更新が 6月7日にありました。これで、ニンテンドー DSi ウェアの ‘ニンテンドーDSi 用 BASIC プチコン‘ を ニンテンドー3DS で遊ぶことができます。

プチコン - 株式会社スマイルブーム
http://smileboom.com/special/petitcom/index_a40.html
プチコン - DSi Ware
http://www.nintendo.co.jp/ds/dsiware/kkoj/index.html

ニンテンドー DSi の DSi Ware を ニンテンドー3DS に引っ越しすることができます。ただし、セーブデータは引っ越しできません。

ニンテンドー3DS|その他(ソフトとデータの引っ越しについて。)|Nintendo
http://www.nintendo.co.jp/3ds/support/transfer/index.html

ニンテンドー 3DS 本体更新は

ニンテンドー3DS|サポート トップ|Nintendo
http://www.nintendo.co.jp/3ds/support/index.html
ニンテンドー3DSニンテンドー3DSの本体機能更新について|Nintendo
http://www.nintendo.co.jp/netinfo/3ds/JPN/ja.html

が参考になります。HOME メニューで更新の案内が表示されない時は、ニンテンドー 3DS の下画面 ‘本体設定’ ソフトアイコンをタッチしたあと、’はじめる’ か ’本体設定’ ソフトアイコンをもう一度タッチします。上画面、右下に本体のバージョンが表示されます。最新版は Ver. 2.1.0-3J です。下画面の ‘その他の設定’/’本体の更新’ を選ぶことで、本体を更新することができます。

DSi Ware のセーブデータを引っ越しできないので、ニンテンドー3DS 用に ‘プチコン‘ を再度購入しました。6月16日に DSi Ware ‘プチコン‘ の不具合修正版が配信されました。ソフトウェアの更新方法は

ニンテンドー3DS
’Nintendo eShop'/'設定・その他'/'購入済みソフト' から 'プチコン' を選び、 'このソフトの情報' ボタンの右隣の '更新' ボタンをタップして更新できます。私の場合、'更新ソフトの確認' では表示されませんでした。
ニンテンドーDSi
'DSiショップ'/'ショッピングへ'/'設定メニュー'/'購入済みソフト' から更新できます。

です。

ニンテンドー DSi ‘プチコン’ のプログラムを ニンテンドー3DS に送信するには SENDFILE、RECVFILE 命令を使います。ニンテンドー3DS、ニンテンドー DSi の両方で ‘プチコン’ を起動し、ニンテンドーDSi 側で FILES 命令を使って送信したいプログラムの ‘リソース名:ファイル名’ を確認します。送信するファイルのリソース名は、SPU0、BGU0 ではなく、FILES 命令で表示される。PRG、CHR なので注意してください。

FILES
PRG:MINE
CHR:SPDATA
CHR:BGDATA

例として ‘PRG:MINE’ ファイルで説明したいと思います。ニンテンドー3DS 側で

RECVFILE "PRG:MINE"

と実行し、待機状態にします。ニンテンドーDSi 側で

SENDFILE "PRG:MINE"

と実行すると ‘ファイルを送る相手を選択してください’ と表示されるので、ニンテンドー3DS側の名前を選択して送信してください。

ニンテンドー3DS のブラウザは、ニンテンドーDSi ブラウザの特徴であった、1つのページを片方の画面で縮小し、もう1つの画面でそのまま表示する機能 ‘通常表示’ がなくなりました。上下の画面がつながった ‘タテ長表示’ だけになりました。スライドパッド、十字ボタンでスクロールします。

また、Opera から ACCESS の WebKit を利用した NetFront に変更になりました。

ACCESS、組込機器向けにWebKitベースの省メモリブラウザを発表 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2011/06/08/006/

WbKit の表示を ‘説明書’/’12 仕様’ で確認できます。