2013-01-01から1年間の記事一覧

C

printf...print data with format scanf...scan data with format \n...new line scanfは入力された文字(Enterキー)をその場では受け取らない。 scanf("%s",name); scanf("%*c%c", ch); //代入抑止の*を加える コンソールの消去 #include <stdlib.h> system("cls"); //</stdlib.h>…

Win32 Part3 プロセス、スレッド編

ヒープはプロセス一個につき、最初から一個用意されている HeapAlloc、VirtualAllocの違いについては、 http://keicode.com/windows/win11.php が詳しい。 VirtualAllocはページ単位でメモリを操作する。(どっさと領域を調達してくる) たくさんメモリを使…

コピーコンストラクタ

//AutoPtr.h #include <cstring> #include <iostream> class AutoPtr { private: char *ptr; public: AutoPtr(); ~AutoPtr(); char *operator=(char *ptr); operator char* (); char& operator[](int index); //深いコピー AutoPtr(AutoPtr& src); AutoPtr& operator=(AutoPtr& </iostream></cstring>…

クラスメモ4-2

//Map.h #ifndef INCLUDED_PLAYER_H__ #define INCLUDED_PLAYER_H__ #include <utility> using namespace std; class Image; class Map; //Playerはいつでも一人なので、シングルトンにする。 class Player { public: static Player* instance(); void draw() const; </utility>…

クラスメモ4-1

クラスを新しく組むときは、まず、コンストラクタ、デストラクタ、もっとも関係しそうなメンバ変数から先に与えていく。 組んだら、テストして動作するか確かめる。(特に,デストラクタのdelete忘れに気を配る.) で、もう一段複雑にする(関数を入れたり、…

クラスメモPart3-3

Mapのstructをclassに替えたもの。 Array2D<Object> mStageData; の配列がsetSizeで動的に生成されるが、この時もコンストラクタは呼ばれている。Objectクラスのコンストラクタは mFlagを0に初期化するようにしたので、邪魔くさいZeroClearは呼び出す必要がなくなっ</object>…

クラスメモPart3-2

//Map.cpp #include "Map.h" #include "File.h" #include "GameLib/Framework.h" //coutも using namespace GameLib; namespace { //Mapコンストラクタ用 unsigned GetMapSize(const char* stageData) { int x=0; int y=0; int tmp =0; for(int i=0; stageDa…

クラスメモPart5

Mapを作る経過ではまったことをメモ。 まず、.txtをbinaryモードで読み込むと、 \r\nが残る。 これは、char型の \r : 10 \n : 13 にあたる。 あとは、Mapではrow,colではわかりにくいので、x,yとか、height,widthであらわすが、その時、 二次元配列上の”たて…

クラスメモPart3-1

今回はRPG風のゲームを簡単ながら作りたいかな、と考えているので、次はMapで。 とりあえず、典型的なやつを一回作りたいので、行き当たりばったりでやってみる。マップを作るので、マップチップの性質を列挙型に定義する。 #include "Array2D.h" //宣言だけ…

クラスメモPart2

本に沿って、Fileクラスも自分で作る。 //File.h class File { public: File(const char* filename); ~File(); int getSize() const; //constメンバ関数はなるべくつける。 unsigned getUnsigned() const; const char* getData() const; private: int mSize;…

クラスメモPart1-2

Part1をテンプレートで書いてみる。 #ifndef INCLUDED_ARRAY2D_H__ #define INCLUDED_ARRAY2D_H__ template <typename TYPE> class Array2D { public: Array2D(int i,int j); ~Array2D(); void Show(); //表示させる関数 TYPE& operator()(int i, int j); //参照つけないと</typename>…

c++ における"&"について

参照& ポインタがメモリ上に実体をもったひとつの変数であるのに対し、 参照はあくまで変数の別名であり、メモリ上に実体がない点が異なります。 int a = 5; int b = 10; int& Ref = a; //必ず初期化する必要がある。参照先は配列型であってはならない。 Ref…

クラスメモPart1

ゲームプログラマになる前に覚えておきたい技術をやっているが、自分の力不足を認識したので、第一部から第2部に移るときに なんかいろいろ作ったほうがいいだろうと思い、メモ。この本のライブラリを使用。 まず、動的に生成される二次元配列クラスを作る…

ポカ集 c++

名前を付けるのになぜか数字から始まる名前にする。

c,c++におけるポインタについて

C++

まだ加筆予定 目標は char (*p)[5]を完全に理解するぐらいまでにはポインタを理解すること。 ポインタと配列の違いは一言でいうならば、書き換えができるか否かである。 ポインタと配列の混乱の元 1:配列名aを読み込む場合、aは&a[0]と解釈される。 2:ポイン…

win32 part2 描画編

C++

赤い色の直線を描く赤のペンを作成 赤のペンをデバイスコンテキストにせんたくする 現在位置を直線の視点にセットする 終点まで直線を描く デバイスコンテキストからの赤のペンを選択削除する 赤のペンを削除する WM_PAINTメッセージではBeginPaintで。(更新…

例のやつ

//ch1gam.cpp #include <iostream> #include <cstdio> #include "Object.h" using namespace std; /* 0000 .po# の順に */ int main() { Stage stage1(5,8); char s1map[5][8] = { {1,1,1,1,1,1,1,1}, {1,0,8,8,0,4,0,1}, {1,0,2,2,0,0,0,1}, {1,0,0,0,0,0,0,1}, {1,1,1,1,1,1,</cstdio></iostream>…

c++

C++

コンストラクタ mallocもnewも必要なメモリ領域をヒープからもらってくるが、mallocには、コンストラクタを呼び出す機能はない。 mallocは仮想関数テーブル迄もを初期化させる。 コピーコンストラクタ: まず、代入と、初期化との区別ができているかどうか?…

win32

//説明 //アプリケーション(.exe)実行でまず、呼び出される //2 int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) /* HINSTANCE hInst:実行中のアプリケーションを識別するための整数値を受け取るもの。(もっと…