読者です 読者をやめる 読者になる 読者になる

Programmer's Notepad とナイトライダー。


普段の開発スタイルが Msys + サクラエディタという構成だったので
参考までに Programmer's Notepad 上で簡単なプログラムを作ってみました。


デフォルトですと日本語の表示に関して文字化けを起こしますが
Tools - Options - General - Defaults の Character Set: を Shift-JIS とすることで
日本語をちゃんと表示するようになります。なるのですが…。


日本語文章、というか 2 バイト文字弄ってると結構バケます。
一筆書きで書ききってる分には問題ないのですが
コメント修正なんかで 2 バイト文字間を手直ししようものなら
もう凄いのなんのって感じです。
1行書き直すか、あるいはメモ帳で書いて貼り付けるかって事態が頻繁に。


統合開発環境をよく利用してる人にとっては使い心地もまずまずかと思いますし、
個人的にはこれさえ無ければ、という気持ちです。


…で、簡単に書けそうなものということでナイトライダーです。
相変わらずテキストベースですみません。
動作とかは yasuho さんの GMC-4 動画を参考にしてます。
てかアセンブラ忘れてしまいました。ヤバス。


Knight Rider

/*---------------------------------------------------------------------------------

	Knight Rider
	
	version 0.01
	Nov 20, 2011
	
	By REGEKATU
	
---------------------------------------------------------------------------------*/
#include <nds.h>
#include <stdio.h>
//---------------------------------------------------------------------------------
int main(void) {
//---------------------------------------------------------------------------------
	
	int i, wait;
	char light;
	bool move_left;
	
	/* コンソールを初期化する */
	consoleDemoInit();
	
	/* ライトの初期値を設定する。最初は右から左に移動させる */
	wait = 0;
	light = 0x0f;
	move_left = false;
	
	/* メインループ */
	while(1) {
		
		/* プログラムを一定間隔で更新する */
		swiWaitForVBlank();
		
		/* ライトを0.1秒毎に移動させる */
		if(wait--) continue;
		wait = 6;
		
		/* ライトが左まで到達したら右へ、右に到達したら左へ折り返す */
		if(light & BIT(7)) move_left = true;
		if(light & BIT(0)) move_left = false;
		
		/* ライトを右または左に移動させる */
		if(move_left) light >>= 1;
		else light <<= 1;
		
		/* 点灯してるライトを赤、消灯してるライトを灰で画面中央に表示する */
		for(i = 7;i  >= 0;i--){
			printf("\x01b[11;%dH", (8 - i)  * 3);
			printf("\x1b[%dm 0", (light & BIT(i)) ? 41 : 40);
		}
		
	}
	
}

//---------------------------------------------------------------------------------