Mesoscopic Programming

タコさんプログラミング専門

Numer0n

ヌメロン製作講座第17回:分析データ構造体の作成

分析データ構造体を作成します。 分析データ表示画面 修正ソースファイル Numer0n.h Numer0n.cpp main.h main.cpp struct Analyze 分析データ構造体です。 struct Analyze { BOOL valids[ MAX_COLUMN ][ MAX_DIGIT ]; BOOL decides[ MAX_DIGIT ]; Number can…

ヌメロン製作講座第16回:分析データグリッドの作成

分析データグリッド表示画面 修正ソースファイル main.h main.cpp class AnalGrid 分析データグリッドです。 class AnalGrid : public Grid { public : static Cell cells[]; Cell * GetCells() { return cells; } VOID MakeGrid(); }; Cell AnalGrid :: cel…

ヌメロン製作講座第15回:棋譜データの入力処理

今回は棋譜データグリッドの入力処理の一部を実装します。 今回実装するのはコール&ジャッジの入力です。 棋譜データ入力時の画面 修正ソースファイル Numer0n.h Numer0n.cpp main.h main.cpp 今回の修正個所。 class Numer0n 追加変数 Record newRecord; …

ヌメロン製作講座第14回:棋譜データグリッドの作成

プレイ画面のうち前回はプレイ情報画面のみを作成しました。 今回は棋譜データ画面を作成します。 棋譜グリッド表示画面 修正ソースファイル Numer0n.h Numer0n.cpp main.h main.cpp class RecGrid 棋譜データグリッドクラスです。 class RecGrid : public G…

ヌメロン製作講座第13回:棋譜データ構造の設計

前回までで設定データの基本的な処理ができたので、今回からは棋譜データの処理に入ります。 今回は棋譜データ構造の設計です。 修正ソースファイル Numer0n.h 棋譜データ構造体 ヌメロンの棋譜の種類は、コール&ジャッジまたはアイテム使用です。1つのデ…

ヌメロン製作講座第12回:プレイ情報グリッドの作成

前回で設定画面がほぼ完成しましたので、今回からプレイ画面の作成に入りたいと思います。プレイ画面には以下に示す3つのグリッド派生クラスがあります。 プレイ情報グリッド 棋譜データグリッド 分析データグリッド このうち今回はプレイ情報グリッドを作…

ヌメロン製作講座第11回:マウスクリックに対応する

本日はマウスクリックに対応します。余談になりますが本当にはてなブログは書きやすいですね。本連載もはてなブログの練習がてら行っているので毎回文書スタイルが変化すると思いますがあしからずご了承願います。ついおとといまで、はてな記法でもほぼ問題…

ヌメロン製作講座第10回:ボタン処理の作成

ボタンを押したらどうなりますか?こう成増。 ボタンが押された状態 修正ソースファイル main.h main.cpp まだマウスには対応していないので、ボタンを押すにはカーソルキーで選択してリターンキーを押すかスペースキーを押してください。 class Application…

ヌメロン製作講座第9回:編集処理機能の作成

春はあけぼの、秋はのぼけあ。皆様いかがおすごしでしょうか? それでは本日のメニューをご紹介いたします。 本日の修正ソースファイル Numer0n.h main.h main.cpp 今回は設定データの編集機能を実装いたします。 まずはアプリケーションクラスの変更点です…

ヌメロン製作講座第8回:キーボード入力処理

今回はキーボード入力処理の一部を実装します。 ウィンドウズアプリケーションでは特にユーザインタフェース処理が複雑になりがちです*1。本アプリケーションも例外ではなく、キーボード入力処理がもっとも複雑な処理になります。そこで今回は、とりあえずカ…

ヌメロン製作講座第7回:ヌメロンクラスの作成

今回はヌメロンクラスのデータ部分を実装します。前回仮表示だった表示内容が以下のように正式なものになります。 修正ソースファイル Numer0n.h *1 Numer0n.cpp main.h main.cpp class Numer0n 今回の実装は表示に必要なデータと初期化のみです。 class Num…

ヌメロン製作講座第6回:グリッドクラスの作成(その2)

今回はグリッドクラスとセル構造体のメソッド*1について説明します。 class Grid まずは初期化関数から。 VOID Grid :: Init() VOID Grid :: Init( HWND hWnd ) { hwnd = hWnd; offset.x = 4; offset.y = 8; MakeGrid(); }これは初期化です。アプリケーショ…

ヌメロン製作講座第5回:グリッドクラスの作成

今回は本アプリケーションの肝であるグリッドクラスについて解説します。ちなみに、そろそろソースコードが大きくなってきたのでここには解説に必要な変更点のみ掲載します。ビルドチェック済みの完全なソースファイルは、それぞれのファイル名にリンク(テ…

ヌメロン製作講座第4回:ペイントメッセージに対応する

まだまだ暑い日が続きますね。 それではペイントしましょう。 main.h ~前略~ const COLORREF black = RGB( 0, 0, 0 ); const COLORREF white = RGB( 255, 255, 255 ); const COLORREF gray = RGB( 160, 160, 160 ); const COLORREF darkGray = RGB( 128, 1…

ヌメロン製作講座第3回:キーボードアクセラレータを追加する

こんにちわ。ではさっそくキーボードアクセラレータを追加しましょう。 main.h ~前略~ enum AccelID { ACCEL_NULL = -1, ACCEL_FILE_NEW, ACCEL_FILE_OPEN, ACCEL_FILE_SAVE, ACCEL_APP_ABOUT, ACCEL_SWITCH_MODE, ACCEL_SWITCH_ANAL, ACCEL_SWITCH_SECRET…

ヌメロン製作講座第2回:メニューを追加する

今回はメインウィンドウにメニューを追加します。 まずヘッダファイルにコマンドIDを追加します。 そして各コマンドに対応する関数宣言も追加します。 main.h #ifndef MAIN_H #define MAIN_H #include "window.h" #include <tchar.h> #include <afxres.h> enum CommandID { ID_C</afxres.h></tchar.h>…

ヌメ不具合修正

さっそくバグ発見のため修正しました。 削除キーで棋譜データを削除する際に不具合がありました。 実行ファイル 修正ソースファイル よろしくお願いします。

ヌメロン検証プログラムと棋譜データのダウンロード

ヌメロン検証プログラムの実行ファイル、ソースファイル、棋譜データファイルをアップロードしました。ソースファイルを改造して公開する際は、くれぐれもソースファイルも同時に公開して下さい。お約束です。 ヌメロン検証プログラム実行ファイル ヌメロン…

ヌメロン製作講座第1回

毎度おなじみヌメロン製作講座のお時間がやってまいりました。 ソースコードは空白入れて1万行弱程度のものです。 グラフィックデータは一切使わないのでリソースファイルはありません。 なのでVisual C++以外でもビルド可能かもしれません。試してませんが…

Window基底クラスの作成

毎回ウィンドウプロシージャ書くのってめんどくさいとお思いの諸兄に。 お決まりのおパタンを基底クラスとして自分で作っちゃいましょう。 自分で作ればMFCみたいにブラックボックスじゃないから多い日も安心。 まずはヘッダを見てチョンマゲ。 window.h #if…

ヌメロン検証アルゴリズム

ヌメロンの検証アルゴリズムについて説明します。 作り始めたころはイフ文だらけで頭がパンクしそうになったけど、落ち込んで寝ていたらアイデアが浮かんだ。 『どうせコンピュータにやらせるんだから全部試させてみりゃ良いんじゃね?』 ここですね肝は。ど…

class Numer0n

ヌメロンのクラス定義は以下のようになっとります。 class Numer0n { public : TCHAR title[ MAX_STRING ]; Column maxColumn; RuleID rule; Player players[ MAX_MOVE ]; Record records[ MAX_RECORD ]; SHORT maxRecord; Record newRecord; HANDLE hFile; …

ヌメロン検証プログラム

ヌメロン大好きなんだけど、たまにとんちんかんな解説が入ることがあるよね。たぶん人力で検証してるか、またはちゃんとした検証ソフトを使ってないせいだと思う。 仕方がないから自分で作ってやったぜ。 こんな感じで手持ちのカードやアイテムを設定しる。 …