開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C++ (プログラミング言語)
- g++(コンパイラ)
C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅡ部(シンプルなプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、実習 11-1を解いてみる。
その他参考書籍
- C++プログラミング入門 (グレゴリー サティア (著)、ダウグ ブラウン (著)、Gregory Satir (原著)、Doug Brown (原著)、望月 康司 (翻訳)、谷口 功 (翻訳)、オライリージャパン)
実習 11-1
コード(BBEdit, Emacs)
sample.cpp
#include <iostream> #include <assert.h> const int X_SIZE = 40; const int Y_SIZE = 60; char graphics[X_SIZE / 8][Y_SIZE]; inline void set_bit(const int x, const int y) { assert((x >= 0) && (x < X_SIZE)); assert((y >= 0) && (y < Y_SIZE)); graphics[(x)/8][y] |= static_cast<char>(0x80 >> ((x)%8)); } inline void clear_bit(const int x, const int y) { assert((x >= 0) && (x < X_SIZE)); assert((y >= 0) && (y < Y_SIZE)); graphics[(x)/8][y] ^= static_cast<char>(0x80 >> ((x)%8)); } int main() { int loc; void print_graphics(); std::cout << "set bits-----------------------------------------\n"; for (loc = 0; loc < X_SIZE; ++loc) { set_bit(loc, loc); } print_graphics(); std::cout << "clear bits---------------------------------------\n"; for (loc = 0; loc < X_SIZE; ++loc) { if (loc != 20) { clear_bit(loc, loc); } } print_graphics(); return (0); } void print_graphics() { int x; int y; int bit; for (y = 0; y < Y_SIZE; ++y) { for (x = 0; x < X_SIZE / 8; ++x) { for (bit = 0x80; bit > 0; bit = (bit >> 1)) { assert((x >= 0) && (x < (X_SIZE / 8))); assert((y >= 0) && (y < Y_SIZE)); if ((graphics[x][y] & bit) != 0) { std::cout << "X"; } else { std::cout << "."; } } } std::cout << '\n'; } }
Makefile
# # FSFのg++コンパイラ用のMakefile # CC=g++ CFLAGS=-g -Wall all: sample195_1 sample195_1: sample195_1.cpp ${CC} ${CFLAGS} -o sample195_1 sample195_1.cpp clean: rm sample195_1
入出力結果(Terminal)
$ make && ./sample195_1 g++ -g -Wall -o sample195_1 sample195_1.cpp set bits----------------------------------------- X....................................... .X...................................... ..X..................................... ...X.................................... ....X................................... .....X.................................. ......X................................. .......X................................ ........X............................... .........X.............................. ..........X............................. ...........X............................ ............X........................... .............X.......................... ..............X......................... ...............X........................ ................X....................... .................X...................... ..................X..................... ...................X.................... ....................X................... .....................X.................. ......................X................. .......................X................ ........................X............... .........................X.............. ..........................X............. ...........................X............ ............................X........... .............................X.......... ..............................X......... ...............................X........ ................................X....... .................................X...... ..................................X..... ...................................X.... ....................................X... .....................................X.. ......................................X. .......................................X ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ clear bits--------------------------------------- ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ....................X................... ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ $
0 コメント:
コメントを投稿