忍者ブログ
凡人の日々の経過を記録
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



コンソール上でゲームを作る場合、どうしてもクリアしなくてはいけない問題がある。
それは、キー入力と画面操作。

キー入力には一般にscanfやgetcなどがあるが、これを使用するとそこで処理が止まってしまうので都合が悪い。
そこで、kbhit()とgetch()を利用する。
kbhit()はキー入力がある場合、1を返し、それ以外は0を返すもので、処理は止まらない。

画面操作としては、エスケープシーケンスといったものがある。しかし、WindowsXPの場合は、このエスケープシーケンスによる操作ができないため、代用できるものが必要になる。
画面クリアとしてはsystem( "cls" )を実行する方法がある。
system()関数はコマンドプロンプト上で実行できるコマンドをCプログラム中で書くことができるものである。
コマンドプロンプト上で"cls"と入力すれば画面クリアすることができるので、これを利用する。

以下にプログラム例をのせる

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main( void )
{
char c;
while (1)
{
system( "cls" ); // Clear
if (kbhit() == 1)
{
c = getch();
switch (c)
{
case 0x1b: /* Esc */
case 0x03: /* Ctrl+c */
return 0;
default:
printf( "key : %c\n", c );
}
}
}
}

拍手[0回]

PR


最近、うどんが食べたくなって作ることにした。
うどんは、冷凍うどんに限る。冷凍最高!!!


スーパーへ行ったら、冷凍うどんがあったのでそれを買ってうどんを作ることにした。
作ったのは煮込みうどんで、材料はたまねぎ、にんじん、長ネギ、油揚げ、ひき肉といたってシンプルなものにした。

味は味噌味にしたが、なかなかおいしくできた。
うどんのコシがしっかりしていて、料理へたな私でもおいしいものを作ることができた。
冷凍うどんの良さは、冷凍室で買い置きできるし、作ったときのコシの強さがいい。
ということで、これからうどんは冷凍を買って作ろうと思う。

今回、材料が1人前よりも多くなってしまった。
油揚げとか、あまってもどうしようもないので、残りは適当に切って冷凍することにした。
冷凍って便利だね。

ご飯もれ~と~
お味噌もれ~と~

拍手[0回]



今日、基本情報処理試験の結果が出た。
IPAのページからのぞいてみたところ、無事合格していた。
ふうぅ、とりあえず、一安心って感じだ。

点数も、なかなかよくて午前午後ともに700点を越えていた。
それなりに自信もあったし、うんうん。

次は、ソフトウェア技術者試験かな。

拍手[0回]



最近は、会社でC++の勉強をしている。

一応、講習という形で行われているのだが、声も届かず、黒板も見えず、はっきり行って自分で勝手にやっていたほうがいいのではと思う。
ただ、演習問題が配られるので、それは結構勉強になるのでやっている。

C++は、大学のときにちょっとやっていて、オブジェクト指向とか、クラスとかの辺は、ほどほどのものなら作れた。

今回、コピーコンストラクタというものがでてきたのだが、これがくせものだった。
クラスのメンバ変数で、int型とかchar型とかの静的な場合は、ただ単にコピーするだけで良いのだが、ポインタといった動的な場合は、ひと工夫が必要らしい。

デフォルトのコピーコンストラクタの仕様は、ビットごとにオブジェクトをコピーする、というものなのだが、ここで、メンバにポインタが使われている場合、そこに格納されたアドレスがそのままコピーされてしまう。

よって、コピーコンストラクタによって生成したオブジェクトとその元の動的なメンバ変数は、同じ場所をさしてしまうため、メモリの開放をダブって行ってしまう危険性がある。

私は、このことをはじめ知らなかったので、デストラクタでdeleteとやっていたのだが、どうもエラーがおこってしまい、うまくいかず悩んでしまった。
大学でも、同じ経験があったので、これがわかったことは、かなりの収穫だった。

コピーコンストラクタと同じように、代入演算子も同じらしい。


C言語はなかなか奥が深いが、C++も奥が深そうだ。
馴れるまでが大変そうだ。

拍手[0回]



以前、printf文で数値の先頭に0を表示したいというときがあったんだけど、そのときは方法が見つからず、しかたなく文字列として表示するようにした。

だけど、簡単に表示する方法が見つかったのでメモっておく。

例)0030を表示する

 int x = 30;
 printf( "%04d\n", x );

以外に簡単すぎて、知らなかったのが恥ずかしい。

拍手[0回]




Powered by 忍者ブログ  Design by © まめの
Copyright © [ ずくのない凡人の日記 ] All Rights Reserved.
http://bambooflow.blog.shinobi.jp/