ページ 11

C言語でストップウォッチを作りたい 【ニンテンドーDS】

Posted: 2011年11月27日(日) 21:53
by s8b
c言語でストップウォッチを作りたいと思ったのですが、作り方が全く分かりません。
c言語に関しては初心者です。
どなたかプログラムお願いします;;

ちなみに、DSでも動くストップウォッチを作りたいです

【※管理人がタイトルを変更しました(11/28 0:49)】

Re: c言語

Posted: 2011年11月27日(日) 22:03
by beatle
フォーラムルールを御覧ください。課題の丸投げは禁止されています。

まず、逆に質問します。
C言語の標準ライブラリだけでストップウォッチを作りたいのですか?
それとも、Win32APIを用いてストップウォッチを作りたいのですか?
DSというのはニンテンドーDSのことですか?

C言語初心者でニンテンドーDSはちょっとキツイんじゃないでしょうか。
ストップウォッチぐらいはC言語の標準ライブラリでサクサクッと書けるくらいが
ちょうどいいんじゃないでしょうか。いや、僕自身DS向けのアプリを作ったことはありませんが。

Re: c言語

Posted: 2011年11月27日(日) 22:22
by softya(ソフト屋)
DSなら、このページが理解出来るぐらいの知識は必要ですよ。ソフトウェアだけでなく英語やハードウェアの知識も必要となります。
「GBATEK」
http://nocash.emubase.de/gbatek.htm

一応日本語のサイト。GBATEKに比べると情報は少ないです。
「NDS開発Wiki - CPU」
http://www35.atwiki.jp/hikipuro/pages/75.html

まず、普通のC言語を知識を深めましょう。
自在に作れるようになったら次の段階として考えてはどうでしょうか?

Re: c言語

Posted: 2011年11月28日(月) 00:47
by Dixq (管理人)
まずは、DSを抜きにして、C言語の標準関数でストップウォッチを作ってみてはいかがでしょう?

・・ということでC言語の標準関数のみで作れるストップウォッチを作ってみました。

コード:

#include <stdio.h>		
#include <time.h>		//clock()用
#include <windows.h>	//Sleep用

clock_t StartClock;

void Start(){
	StartClock = clock();
}

int GetDiff(){
	return clock() - StartClock;
}

int main(void){
	Start();
	Sleep(1000);
	printf("経過時間は%d[ms]です。\n", GetDiff() );
	return 0;
}
こうすることで、Start関数をコールしてから、GetDiffをコールするまでの時間がミリ秒で取得可能です。
StartをコールせずにGetDiffを使い続ければラップタイムを表示することが出来ます。
ちなみに精度は環境依存します。
DSがどんな環境なのか知りませんが、Linux環境ならgettimeofdayを使えばマイクロ秒単位で計測可能です。
DSにも時刻を取得するAPIはあるでしょうから、それを上記に当てはめれば良いかと思います。