Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Programming

クラス設計が難しいと改めて思い知る

クラス設計は難しい... 前回のエントリーで書いたテトリス Windows APIとC++でテトリス - Gobble up pudding のプログラムを書いて、オブジェクト指向というよりクラス設計は難しい、 本当に難しい!!ということを痛感しました。 絶対にコレ!っていう定石…

Windows APIとC++でテトリス

Windows APIとC++でテトリス作りました。全ソースコードを載せていたわけではないので、いくつか質問があったのもありGitHubにすべてのソースコードを置きました。 なお、Windows APIのWndProc周りをクラス化しているので記事のと少しソースコードが変わって…

Visual C++でのDLLの一般的な作成方法(暗黙的リンク)

2016年02月07日更新 https://msdn.microsoft.com/library/81h27t8c(v=vs.110).aspx によるとメンバーに対してdllexportはだめらしいので追記。 また、main側サンプルコードが中途半端だったので、C++03以前で書きました。古い環境で開発せざるを得ないことも…

WIN32APIだけでノベルゲームエンジン

WIN32APIとC言語だけでここまでのものが作れるなんてってことで、今回はプログラムの紹介記事です。 なにかとここのプログラムでゲームプログラミングを勉強させていただいています。 WindowsでのめんどくさいVC++でのDLLの作成もしていますので、勉強になる…

ハイパー簡易暗号化プログラム

前回書いたエントリーの 関数内で宣言した配列変数をreturnしてはいけない - Gobble up puddingの 具体的なサンプルってことで書いただけです。 こんなの暗号化じゃねーってはなしですが、まぁ許してください(´・ω・`) 家族に見られちゃまずいあんなファイル…

関数内で宣言した配列変数をreturnしてはいけない

C言語では関数内で宣言した配列変数を素直にreturnする方法がありません。 知らないとこんなコードを書きがちですが、 この書き方では関数内で積まれたスタックがリターン時に解放されてしまうので、 返したアドレスが無効になってしまって、たまたま動くこ…

STL入門 第5回 ~map編~

今日はmapです。巷ではdictionaryとか言ったり、連想配列とか言われてるあれです。巷ってどこだー。くしゃみが止まりません(;´・ω・)過去のSTLの記事はこちら↓ 定義 namespace std { template < class Key, class T, class Compare = less<Key>, class Allocator = </key>…

STL入門 第4回 ~list編~ 2

過去のSTLの記事はこちら↓ JavaScriptを勉強してる私です。しかしCSSがちょっとわかってないことに気付いたグフフ。 ちくしょー、暗記系かよ~と嘆いております。 気を取り直して、C++のSTLのlist再びです。 今回はlist::splice()の紹介です。 次の形式があ…

「char型へのポインタの配列」と「char型の配列へのポインタ」について

C言語で混乱しやすいのはポインタの表記ですね。 次の2つを見てみましょう。 char *foo[10]; char (*bar)[10]; このとき、fooとbarは意味が違います。 どちらかが 「char型へのポインタの要素数10の配列」 でもう一方が 「要素数10のchar型の配列へのポイン…

第4回 生成に関するパターン Prototype

Design Patterns 第4回 生成に関するパターン Prototype 前回のリンク 生成に関するパターン Prototype Prototypeパターンは生成されるオブジェクトの型が、新しいオブジェクトの複製として生成されるプロトタイプのインスタンスによって決定されるソフトウ…

第3回 生成に関するパターン Abstract Factory

Design Patterns 第3回 生成に関するパターン Abstract Factory 前回のリンク 生成に関するパターン Abstract Factory Abstract Factoryパターンを使うことで、それぞれの具体的なクラスを特定することなく共通のテーマを持った個々のファクトリをカプセル化…

第2回 生成に関するパターン Factory

Design Patterns 第2回 生成に関するパターン Factory 前回のリンク gup.monster 生成に関するパターン Factory 単一の派生クラス群からインスタンスを生成するユーティリティクラス ファクトリーデザインパターンは共通の基本型から派生しているたくさんの…

第1回 生成に関するパターン Builder

2020-07-30 Design Patterns 第1回 生成に関するパターン Builderデザインパターンの本を買いましたが、 コードが断片化して書かれているためか理解できず……。 そんなとき、WikiBooks(CC-BY-SA 3.0)でいいサンプルを見つけたので、 翻訳して、ソースコードを…

Javaのファイル読込みの定型パターンは?

Javaを使い始めて日が浅い僕ですが、Javaのファイル読込みのエラー処理の仕方ってサイトを見るとみんな微妙に違うんですよね。 ぼくはこうするのがいいんじゃない?と思ってるんですが、世間のJavanese(Javaを使う人)はどうしてるんでしょ。ちなみにJavaづか…

C++の名前空間と前方宣言について

最初にざっくり説明すると、C++の名前空間はC#にある名前空間と同じ概念です。Javaでいうとpackageに近い概念です。 前方宣言(forward declaration)はC++特有のものだとおもわれます。 前方宣言について あるクラスで包含(コンポジション: Composition)をし…

STL入門 第3回 ~list編~

過去のSTLの記事はこちら↓ 入門記事というよりただの自分の勉強記録になり下がってるのは仕様です。listはSTLコンテナでvectorに似ています。シーケンシャルアクセスをサポートしています。前からも後ろからも。ただし、vectorのようなランダムアクセスはサ…

STL入門 第2回 ~vector編~

第1回目はこちら↓ ってかこっちのほうが第1回っぽいのは気にしないでください。STLにはコンテナというテンプレートクラスでできているオブジェクトの入れ物があります。 大きく分けて、シーケンスコンテナ(Sequence Container)、連想コンテナ(Assosiative Co…

プログラムからBitmap画像を扱う(VC++) 1回目

今回使う画像です。使う画像は背景をキャプチャして切り取ってビットマップ(Bitmap)として保存したものです。ここからDLしたものを使わせていただきました。 何回かに分けてビットマップ画像を扱う特集をやろうと思います。Windowsな話です。 扱いが簡単なビ…

TopCoderはじめてみました SRM516 Div2 Easy NetworkXZeroOne

TopCoderっていう競技プログラミング的なものがあるんですが、 僕はアルゴリズムってか考える力が少し弱いと思ったので、気が向いたら今後もやろうと思います。 競技プログラミングと聞くとすごい敷居が高いように感じられますが(もちろん上級向けの問題は…

C#で日本語ソースコードを避ける方法 ~メニュー&データセット/データテーブル~

備忘録を兼ねて書きます。C#でFormを日本語で作っていると、 C#の自動生成コードがそのままで日本語になってしまうので、 それらを使う側のコードも日本語を使うことになり、 実害はないんだけれどもこれは精神衛生上よろしくない… なんて思いの方は多いかと…

C++11が便利すぎる 正規表現 ~regex編~

C++11になってから複雑怪奇さをより増した一方で、 実はめちゃくちゃ使いやすく便利になっていることに最近気づき始めました。 ここで紹介するコードはC++11に対応しているものでないと実行できません。 Visual Studioだと2013以降です。 g++だと -std=c++11…

C/C++で行数を数えるときの注意とwcコマンド

C/C++を使っているとファイルを読んで、メモリ上にデータを格納したいときに メモリをどのくらい確保する必要があるか調べるのに行数を数えることが多いかと思います。 だいたいは以下の様なコードを書かれたことが多いのではないのでしょうか? 私はよほど…

STL入門 第1回 ~algorithm編~

2020-10-13 C++使うなら最低限STLくらいは知らないといけないだろうということで勉強中です。 STLくらいっていうけど結構ここから険しい道の入口なんですけどね…。 他の言語に比べて気持ち悪いシンタックスが増えるし、 どういうわけか覚えにくい……なんでだ…

Javaからメールを送信 ~迷惑メール業者を駆逐してやる~

サブタイトルは冗談です。 本当にこの手法を使ってものすごい勢いでメールボムを作ると法律に抵触します。ある程度細かく説明していますが、一定の知識がない人にはできないと思われるため、 まぁ小学生みたいのには悪用されないだろうと思い、 書きます(凄…

Javaを使ってBOM付きUTF-8でハマる

Javaのサーバアプリにクライアント側からPOSTで文字列でXMLを送りつけたらXMLの解析時にパースエラーになって1時間ほどハマった時の話。 結論を先に言いますと、BOM付きのまま文字列としてサーバに送信してしまったのでJAXBでコケた。ということです。対策と…

プロジェクトテンプレートの作成

少し暖かくなってきましたね。 今日はVisual C++プロジェクトテンプレートの作り方です。 あれ~また、同じものを書いてるよー。 WinMainを何回も何回も書いてるしーうわー。とかね。そんなのを解消するために プロジェクトテンプレートがあります(Cスタイル…

Direct2DとWindows Imaging Component(WIC)で透過PNGを表示

Direct2Dを使ってPNG画像を表示するいい方法はないか模索していたところ、 Windows Imaging Component(WIC)というのを見つけましたが、しばらくこれどうやって使うの? 状態が続いており、いろんなサイトを読んでみるも挫折…… と思ったところ神!!!といえ…

デフォルトで用意されているプロジェクトのコード修正 Visual Studio

Win32 プロジェクトのInitInstance内のインデントがおかしい……。 どのバージョンで同様のことがおこっているかわかりませんが Visual Studio 2013では 新規作成でのウィザードからWin32 プロジェクトを作ると自動で作られるひな形の BOOL InitInstance(HINST…

可変長引数(va_list, va_start, va_arg, va_end)を扱ってみた。

他の人のソースコードをみて、va_listを使っているのがあって、そういえば、自分では使ったことがなかったなと思い、可変長引数を受けとって処理するva_list, va_start, va_arg, va_endを使ってみました。 おおまかな使い方は行かな感じ。 void hoge(const c…

いまさらながら Apache Struts 1.3.10 + Eclipse 環境構築

いまさらながらStrutsの開発環境を構築しよう!っていうお話です。 さて、どうしよう……。Javaといえばeclipseですね。そうですね。 別にメモ帳で書いてもいいんだけどさ。いや、やだ。 以下、とりあえず動かすのに最低限の記述を。とっかかりって大事ですよ…