くるしいプログラミング日報

くるしい職業からくるしい職業に転職した人はどうなってしまうのかを検証します。

20190222くるしいプログラミング日報

本日の学び

ビット反転
0b011を反転するなら
0b100ってなるだけ

2の補数
0b011 0d00000003
の補数は
0b101 10進数で-3になるよ
って話です。
求め方はビット反転して1を足すだけ
負の値から正の値にするときも反転して1を足せばできます。
補数を使うと足し算だけで引き算ができるらしい。
10進数でやってみると
9-3=6です。
これを9+(3の補数)と見て
3の補数を出します。
補数とはケタが繰り上がる最小数。なので7です。
なので9+7=16
そしてこの結果から最上位のケタの1を取り除くと6になります。
2進数で9-3を補数を使ってやった場合
0b01001 0d00000009
0b011 0d00000003
まず0d00000003の2の補数をだします。
0b101
こいつと0d00000009を足します。
0b01001
0b101
0b01110
そんで一番上の1を取り除くと
0b00110になる。
なんと6です。
完全に不明。

明日以降の課題

ストリーム

ファイルの情報(サイズ)を読み取ってそれに合わせてchar型配列のメモリのサイズを指定

//getc or getwc これ使わないでいけた

winapiをもっと理解

バイナリ

//2進数でファイルを読み込み winapiでReadFile()とTextOutを使ってできた

//1バイトずつ読み込み 全部読み込んだのを1バイトずつずらしながら表記で解決

//16進数変換 winapiでできた

//16進数をchar型に変換 winapiでできた

テキストファイルに出力 //出力だけやった

間違ってるところ、知識の補足等あったら教えてください。

必死です。

100%くるしいよになるお手伝いとしてこれからウソ情報教えます。

まずこれは基本なんですが、エディターはvimを使います。
こういうのはダメです。

おわい飯

おまけ


しゅごい

20190221 くるしいプログラミング日報

本日の学び

int a,b,c;

とあって、
aの値は0<=a<256の範囲とする。
このときに
aを変数b,cに変換して格納して

printf("%c", b);
printf("%c\n", c);

として表記してaの値を16進数で出力したい。
このときどうやるかって話です。

printf( "%X\n", a );

このやり方は今回はなしで。

僕のやったやり方の場合

int main()
{
	int a = 58;
	int b, c;
	int amari;
	b = 0;
	c = 0;
	amari = 58 % 16;
	b = (a - amari) / 16;
	c = amari;

	if (b < 10)
	{
		b += 0x30;
	}
	else
	{
		b += 0x37;
	}
	if (c < 10)
	{
		c += 0x30;
	}
	else
	{
		c += 0x37;
	}

	printf("%c", b);
	printf("%c\n", c);
	system("pause");
}

こんな感じにしました。
aを10進数で58、求めたい出力は0x3Aとなります。

他の人の書き方

    int a = 58;
    int b = a >> 4 & 0x0F;
    int c = a >> 0 & 0x0F;
    printf("%c", b >= 0xA ? b + 0x37 : b + 0x30 );
    printf("%c\n", c >= 0xA ? c + 0x37 : c + 0x30 );
    system("pause");

多分やってることは同じ。

    char ascii[] = "0123456789ABCDEF";
    int a = 58;
    int b = a >> 4 & 0x0F;
    int c = a >> 0 & 0x0F;
    printf("%c", ascii[b] );
    printf("%c\n", ascii[c] );
    system("pause");

なるほどなーって思ったのはこっち。

他にも上記の条件を満たして書き方思いつく人いたら教えてください。
itoaとか使っても行ける気はする。



明日以降の課題

ストリーム

ファイルの情報(サイズ)を読み取ってそれに合わせてchar型配列のメモリのサイズを指定

getc or getwc

winapiをもっと理解

バイナリ

2進数でファイルを読み込み //cでコンソールでならできた

1バイトずつ読み込み //cでコンソールでならできた

16進数変換 //cでコンソールでならできた

16進数をchar型に変換 //cでコンソールでならできた

テキストファイルに出力 //出力だけやった

間違ってるところ、知識の補足等あったら教えてください。

必死です。

100%くるしいよになるお手伝いとしてこれからウソ情報教えます。

まずこれは基本なんですが、エディターはvimを使います。
こういうのはダメです。

おわい飯

おまけ

コードを見やすくするためにブログの記述方法を変えました。
特別協力
ド (@d0kusounko) | Twitter
www.doutei.pro

20190219 くるしいプログラミング日報

本日の学び

 

 ASCIIコード

8bitの文字コード

だけど7bitしか使ってない

128通りの文字とか見えない文字を表現できる。

0x00~0x1Fは表示されない

テキストファイルにある

CR 0xDF(キャリッジリターン)改行

LF 0xAF(ラインフィード)左に戻る

 とか

OSによってはテキストファイルで改行したときにLFがあったりなかったり

英語と記号しか表示できない

 

LPSTR = char*
LPCSTR = const char*
LPTSTR = TCHAR*
LPCTSTR = const TCHAR*
LPWSTR = WCHAR*
LPCWSTR = const WCHAR*

ただの型宣言

LP = *(ポインタ)
C = const
TSTR = TCHAR
STR = char
WSTR = WCHAR

TCHARとWCHARは覚えなくていいらしい

 

10進数と2進数と16進数の変換

10進数で100を2進数と16進数に変換するとすると

2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1

128 64 32 16 8 4 2 1

64+32+4=100

01100100

 

16^8 16^7 16^6 16^5 16^4 16^3 16^2 16^1

100/16=6

100%6=4

64

Perfect

 

明日以降の課題

 

ストリーム

ファイルの情報(サイズ)を読み取ってそれに合わせてchar型配列のメモリのサイズを指定

getc or getwc

winapiをもっと理解

 バイナリ

2進数でファイルを読み込み

1バイトずつ読み込み

16進数変換

16進数をchar型に変換

テキストファイルに出力 //出力だけやった

 

間違ってるところ、知識の補足等あったら教えてください。

必死です。

 

100%くるしいよになるお手伝いとしてこれからウソ情報教えます。

まずこれは基本なんですが、エディターはvimを使います。

こういうのはダメです。

 

おわい飯

  

 

おまけ

 

 

みんなも投票しよう

20190218 くるしいプログラミング日報

本日の学び

 

 ハンドル

winapiのオブジェクトを使うための何か

 

ウィンドウプロシージャ

ウィンドウにイベントがきたらウィンドウプロシージャに通知がいってそれに対しての動作を定義したもの

 

コールバック関数

あることが起こったら返す反応

 

くしゃみをしたら死ぬ

咳をしたらうんこを漏らすというコールバックがあるとする

くしゃみをするイベントが起きたら死に咳をするイベントがあったらうんこを漏らす

ウィンドウプロシージャはめちゃくちゃたくさん動作を行っていてプログラムのタイミングなくイベントが来たら即発動してうんこを漏らしながら死ぬ

 

バイナリ

2進数の集合体

 

間違ってるところ、知識の補足等あったら教えてください。

必死です。

 

100%くるしいよになるお手伝いとしてこれからウソ情報教えます。

まずこれは基本なんですが、エディターはvimを使います。

こういうのはダメです。

 

明日以降の課題

 

winapiをもっと理解

 バイナリ

2進数でファイルを読み込み

1バイトずつ読み込み

16進数変換

16進数をchar型に変換

テキストファイルに出力

 

おわい飯

 

 

おまけ

 

 これからくるしくなることが予想されるのでタイトルを変えました。

今やってる練習プログラムは2月いっぱいに完成させないといけません。

さらに基本情報技術者試験も受けなければなりません。

メイプルストーリー2引退の機運が高まる.....

 

 

 

20190213 本日の進捗

本日の進捗になります

 

 仕事でC#を使えないとあかんようなのでC#をやってます。

 

本日の学び

 

人は学び続けなければならない

 

明日以降の課題

 

 C#の基礎

基本情報技術者試験合格

マイナンバーカード作成

Don't use mobit.

 

おわい飯

 

 

おまけ

 

 長かったニート生活に終止符を打ちます。

なんとか自社開発のソフトウェア会社に就職できました。

 これからは僕が作るソフトウェアを皆様使う機会があるかもしれません。

覚悟せえよ。

 

 

就職祝いコーナー

ほしい物リスト

 

 

メイプルストーリー2めちゃくちゃおもしろいし国際交流にもなるのでやらない理由がないですね。

20181214 本日の進捗

本日の進捗になります

 

c++の学習をはじめました。

とりあえずコンソールでどうこういじるのをやってから、今作ってるゲームをc++版に移植を目標にやっていこうと思います。

 

本日の学び

 

 名前空間

 

多分複数人でプロジェクトを進めていく時に、変数名が被っても大丈夫なように使ってるんだなあみたいなイメージ。

cでいうとこのグローバル変数とローカル変数とは違うのか?

グローバル変数にstaticつけたらええんちゃうかってイメージ。

よくわかっていない。

 

stringクラス

 

これめっちゃ便利ですね。

でもこれってメモリの確保どんな感じになってるんでしょうか。

char unko[256];の256の所を代入された文字列に対してsizeofで出すみたいになってるのか、unko[];みたいにやってあとから入れてるのかよくわからない。

 

クラス

 

構造体に関数も持てるようにしたような感じでしょうか。

アクセス修飾子はpublicならグローバルでprivateにするとローカルみたいな感じいいのかな。

あるクラスのprivate指定された変数とかの数値をいじりたい場合、そのクラスでそのクラスにある変数をいじるpublic関数を用意すればいいのでしょうか。

 

オブジェクト生成

 

 cで構造体として宣言した型を、その型の変数とか関数として宣言するってことに近いのかなあ。

いまいちよくわかっていません。

 

コンストララクタ・デストラク

 

値の初期化とメモリの開放ってこと?

newとdeleteでメモリの確保と開放を行う処理を任意の場所でできるってことでしょうか。

 

明日以降の課題

 

 c++の基礎学習継続

 

ニート

 

 

おまけ

 

f:id:ununu06:20181214024919p:plain

 \47,368-のドローンが3セルブラシレスで屋内とか狭い場所で気軽に飛ばせるようなスペックではなかったためもっと気軽に飛ばせるやつがあってもいいのではないかという意見を受けましてまだ買ったドローン届いてないのに追いクアッドしてしまいました。

みんな大好きDJIから出てる唯一のホビードローンです。

空撮性能とかは全然期待してなくて、飛ばして遊ぶようですね。

これから5日の間にドローン2台届く灼熱の展開が待っています。

20181212 本日の進捗

本日の進捗になります

 

ゲーム自体の進捗は敵のショットパターンを追加しただけです。

 

 

本日の学び

  

 データ構造を何種類かと、ソートアルゴリズムについていくつか学んだ。

でもこれ使ってみないとよくわかりませんね。

なんかこれ以上このゲーム作ろうと思って敵のショットパターンとか増やしてもあんまり意味がない気がしてきたので、別のものを作ってみようかと考え中。

 

明日以降の課題

 

 

データ構造について理解

データのソートとかのアルゴリズムについて理解

 

敵の移動パターンをもっと増やす

敵のショットパターンをもっと増やす

 

ボム実装

ゲームオーバー判定

//5フレーム毎に1発を100フレームまで繰り返すみたいなやつが1発だけしか発射されないバグがあるのでそれの修正

//自機の弾が敵に当たったら敵が消えるようにする 

//敵の弾のパターンを増やす

//敵の位置と自機の位置から角度計算する関数を用意

//敵の数を増やす

//敵の行動パターンを複数用意 

//svn使いこなす

// プレイヤーの残機実装

// 自機の弾のパターンを増やす

//敵撃破時エフェクト

//敵の弾が自機に当たったら自機を消滅

//自機消滅時エフェクト

//自機再生成

//画面スクロール(背景)

//敵を描画

//敵と弾に当たり判定をつける

//わかりにくい変数と関数名の修正

//関数とか変数をもっと別cppとヘッダーで管理

typedef ← あとで調べる

ポインタ完全理解 //関数ポインタ完全に理解

//(math.h 逆正接) なんか二点間の角度を求める時に使えばええんやなあ程度に理解

 

ニート

 

 

おまけ

 

 無