凡人の日々の経過を記録
カレンダー
カテゴリー
リンク
最新記事
(03/21)
(03/11)
(03/05)
(03/02)
(02/06)
ブログ内検索
コガネモチ
最近、Perlというものに興味があってちょっと勉強してみようかなと思った。
さっそく本屋さんへ立ち寄りPerlの本を探したら何冊かあって、その中で読みやすそうな初心者向けの本を買ってしまった。 その本を買った決め手は、本の後ろの発行刷数をみて、他の本よりも多かったのでこれに決めた。 買った本のタイトルは「すぐわかるPerl」で著者「深沢千尋」である。 とりあえず、まだ読みはじめだがPerl言語をさわった感覚としてはC言語と似た感じを受けた。 ちょっと配列の扱いかたがCと違うので戸惑っているが、慣れればこっちの方が簡単そうな印象。 foreachはなんだかとっても便利そうで、たまにスクリプトとかでも見てたんだけどいまいちわからなくて飛ばして読んでたんだけど、結構簡単でかなり重宝しそう。 目標は、ファイル操作ができるようになることと、引数を操作できるようになることかな。 飽きない程度にがんばろう! 最近、C++を勉強したのでS60のプログラミングに挑戦してみることをはじめた。
私が持っている携帯は、702NKⅡ(Nokia6680)で、 とりあえず、フリーでできる環境環境を探して見たところ、Carbide.c++ Expressというのがあった。 早速、ダウンロードしてきた。 それと、SDKとActivePerlも落としてきた。 パソコンにインストールしたところ、かなりの容量を使ってしまった。 インストールは結構時間がかかったが無事成功。 早速プロジェクトを作って、ビルドして、実行してみた。 エミュレータの実行はかなり時間がかかったが無事動いてくれた。 あと、sisファイルも作成できた。 つぎに、表示される文字を変えようと思って、.locファイルの文字を変更したんだけど、どうも変更されない。 ビルドとかしたけど、やっぱり変更されない。 で、いろいろやった結果、 \Epoc32\release\winscw\udeb\z\system\appsの中に作成されているファイルの中の.rscファイルを削除してリビルドしたところ、表示がかわった。 よくわからないけど、消さないとだめなのかな。 あと、リビルドするときconsole画面でエラーがでる。 どうやら、"rm"というコマンドがwindowsにないからと思われる。 そこで、プロジェクトファイル内に、makefile.defsを作成して、 内容を、 RM := del としてみたら、エラーなくうまくビルドできた。 IDEを使っているといろいろと不都合がところどころあるようで、そのへんは臨機応変に使っていかないとダメみたいだ。 コンソール上でゲームを作る場合、どうしてもクリアしなくてはいけない問題がある。
それは、キー入力と画面操作。 キー入力には一般にscanfやgetcなどがあるが、これを使用するとそこで処理が止まってしまうので都合が悪い。 そこで、kbhit()とgetch()を利用する。 kbhit()はキー入力がある場合、1を返し、それ以外は0を返すもので、処理は止まらない。 画面操作としては、エスケープシーケンスといったものがある。しかし、WindowsXPの場合は、このエスケープシーケンスによる操作ができないため、代用できるものが必要になる。 画面クリアとしてはsystem( "cls" )を実行する方法がある。 system()関数はコマンドプロンプト上で実行できるコマンドをCプログラム中で書くことができるものである。 コマンドプロンプト上で"cls"と入力すれば画面クリアすることができるので、これを利用する。 以下にプログラム例をのせる
最近は、会社でC++の勉強をしている。
一応、講習という形で行われているのだが、声も届かず、黒板も見えず、はっきり行って自分で勝手にやっていたほうがいいのではと思う。 ただ、演習問題が配られるので、それは結構勉強になるのでやっている。 C++は、大学のときにちょっとやっていて、オブジェクト指向とか、クラスとかの辺は、ほどほどのものなら作れた。 今回、コピーコンストラクタというものがでてきたのだが、これがくせものだった。 クラスのメンバ変数で、int型とかchar型とかの静的な場合は、ただ単にコピーするだけで良いのだが、ポインタといった動的な場合は、ひと工夫が必要らしい。 デフォルトのコピーコンストラクタの仕様は、ビットごとにオブジェクトをコピーする、というものなのだが、ここで、メンバにポインタが使われている場合、そこに格納されたアドレスがそのままコピーされてしまう。 よって、コピーコンストラクタによって生成したオブジェクトとその元の動的なメンバ変数は、同じ場所をさしてしまうため、メモリの開放をダブって行ってしまう危険性がある。 私は、このことをはじめ知らなかったので、デストラクタでdeleteとやっていたのだが、どうもエラーがおこってしまい、うまくいかず悩んでしまった。 大学でも、同じ経験があったので、これがわかったことは、かなりの収穫だった。 コピーコンストラクタと同じように、代入演算子も同じらしい。 C言語はなかなか奥が深いが、C++も奥が深そうだ。 馴れるまでが大変そうだ。
Powered by 忍者ブログ
Design by © まめの
Copyright © [ ずくのない凡人の日記 ] All Rights Reserved. http://bambooflow.blog.shinobi.jp/ |