ブログ記事156件
constexprifは実体化されないはずの方の分岐でも、テンプレート引数に依存しない部分は文法チェックが入ってエラーが報告されることがある。よく経験したのがstatic_assertで、与えた条件式がテンプレート引数に依存せずfalseになることが分かっていると、分岐しない方にしか書いていないのにstatic_assertのところでエラーが出た。これは最近修正されたらしいんだけど、そこだけ修正したんでいいんか・・・?例えば下記のようなコードでは今もエラーが出る。autofu
先日24日の記事で分岐について書きましたが、もう少し詳しく回数を使って書こうかなと思います。コードを書く場合、そのまま書いていくと順番通りに処理を行うことになるので、工程表のような構造になりますが、基本構造はこれなので、■何を■どのように■どの順番で処理をするのか?を考えることになります。この際に、■必要なものを用意する■準備したものを使用して処理をすると言う作りになっていますから、必要なものは事前に用意することになります。C言語や
古の技術でゲームプログラミング第13回今回もゲームに必須の技術、画像のブロック転送です。前回、メモリ上にビットマップを作る方法についてきましたが、今度はそれをウインドウのクライアント領域に転送して画面表示しよう、というお話です。おおまかな手順は以下の通り。1)ビットマップをロードする2)メモリデバイスコンテキストを作る3)メモリデバイスコンテキストにビットマップを紐づける4)ウインドウのデバイスコンテキストを取得する5)ビットマップからウインドウにブロ
古の技術でゲームプログラミング第12回今回はゲームの画面表示に必須のビットマップ(DDB)に関してです。メモリ上で扱えるビットマップとしては2種類あります。デバイスに依存した形式のDDB、デバイスに依存しない形式のDIBの2つです。DDBはデバイスに依存するものでピクセルの情報を直接編集したりはできない代わりに単純なコピーなどは高速で行えます。※デバイス依存ビットマップ=DeviceDependentBitmapDIBはピクセルフォーマットが決まった
古の技術でゲームプログラミング第11回ゲームでの操作といえばやっぱりゲームパッド!ってことでゲームパッドの情報取得の方法です。デバイス情報の取得PCにおいてゲームパッドは標準装備とはいいがたいので、そもそも接続してるかどうかの確認が必要です。また、パッドの種類もいっぱいでボタンの数もちがったり結構メンドクサイです。ってことでまずはデバイス情報を取得します。MMRESULTjoyGetDevCaps(UINTuJoyID,
古の技術でゲームプログラミング第10回マウス入力の取得方法について。マウスについてはあまり使わないかな~と思っているので簡単にポインタ座標の取得と左右ボタン状態の取得の2点のみのの対応で行きたいと思います。ポインタの座標取得使用するのは以下のAPIです。BOOLGetCursorPos(LPPOINTlpPoint);これにPOINT構造体のポインタを渡すと、画面上のポインタ座標を取得できます。ただ、画面全体における座標であるためそのままではなかな
古の技術でゲームプログラミング第9回キーボード入力の取得方法について。私が思うゲームではあまりキーボードの出番はないかなと思いますが、とはいえゲームパッドをつないでないと動かせないんじゃ話になりません。なのでキーボード入力についても状態を取得できるようにしておきたい。本来、Windowsアプリではキーが押されたり放されたりしたときは、ウインドウメッセージが発行されてウインドウ側で処理が行えます。ですがゲームにおいてはあまり使われない方法かもしれません。
古の技術でゲームプログラミング第8回FPSの制御方法について。PFS=FramePerSecondですね。秒間何フレーム描画するか、みたいなヤツ。今は120とかもっとそれ以上のモニターとかもけっこう出回ってるみたいですが、ひと昔前はテレビ基準の60FPSが基本だったと思います。私のノートPCのモニタも60Hzになってます。60FPSということは描画60フレームとなり、1フレームあたりの時間は…16.66666...msecとなります。じゃあ1フレーム
古の技術でゲームプログラミング第7回スレッドの作り方WindowsAPIにはスレッドを作る以下の関数があります。・CreateThreadしかし、だまされてはいけない。Cランタイムライブラリを利用するアプリケーションにおいては以下を使わなくてはいけません。ヘッダファイル:process.huintptr_t_beginthread(//NATIVECODEvoid(__cdecl*start_address)(void*
古の技術でゲームプログラミング第6回ゲームのメインループはどうするんだ?というお話。メッセージループにおけるGetMessageがゲームに向いてないよねっていうことを以前書きましたが、じゃあPeekMessageを使ってやるのか?っていうとそれも地味に気持ち悪いので今回はマルチスレッドで解決していきます。スレッドというのはいわゆる並行処理をするための実行単位のことです。WinMainから始まってGetMessageを使ったメッセージループでぐるぐるするヤツはプライマリス
古の技術でゲームプログラミング第5回クライアント領域の大きさからウインドウの大きさを求める方法についてです。そもそもCreateWindowに渡すウインドウの幅と高さは↓の絵でいうところのnWidth,nHeightにあたる部分になります。ゲーム用にウインドウを作ろうと思ったら、通常はゲーム画面を描画するための領域であるクライアント領域の大きさを決めたいところ。しかしCreateWindowでは直接クライアント領域の大きさを指定することができません。使えないな。
古の技術でゲームプログラミング第4回今回はプログラムのエントリーポイントとウインドウの生成あたりまでの話。テンプレートから作成したプロジェクトで実装されてるのはおおむね以下の内容になっています。・プログラムのエントリーポイント・ウインドウクラスの登録処理・ウインドウ生成処理・ウインドウプロシージャ・メッセージループ※カタカナでウインドウって書くのがなんか変な感じプログラムのエントリーポイントエントリーポイントとなる関数intAPIENT
古の技術でゲームプログラミング!っと題してゲームプログラミングのネタを書いていこうと思います。むかーし、25年前くらいになりますが、私が専門学校に通っていたとき、卒業研究としてVB6.0とWindowsAPIでゲームをあるていど動かせるところまで作りました。※VB6.0ってのはMicrosoftVisualBasic6.0で、今だとExcelのVBAとかにその名残があります。ExcelVBAは今でも使えるので当時の経験が役に立ってます。※VBだと当時DirectXが
もう電線病気は卒業したひとです。csvで困るのは”ダブルコーテーションのなかに囲まれた”カラムを持つとかなんとか実験はそこそこに多分どうさするであろうライブラリを紹介します。実際にはこのライブラリが読み使えたという報告にすぎません。今日はラピッドCSVを紹介します。d99kris/rapidcsv:C++CSVparserlibrary(github.com)このギットにいろいろはいっていますが、つかうのはrapidscv.hだけです。その他のファイルはつかいませ
Linuixをインストールすると、■Python■HTMLを最初から使用できるので、■Pythonのコンソールアプリ■WEBブラウザで動作するものを作ることができます。Linux環境だとC言語やC++はインストールされていないのですが、インストールの有無については、バージョンを調べるとのようになります。実際に確認してみるとのようになりますが、のようにLinuxをインストールした直後では、■gcc:
おはようございます。株式会社ザ・プレゼンツ・ポジティブパートナーズのキャリア能力開発事業部です。(弊社は、日本プライバ認証機構(JPAC)の認定研修機関です)2024年オンラインにてライセンス認定資格講座&試験のお知らせです【5月6月認定資格講座開催スケジュール:受付中】市場価値向上に必要な認定資格個人情報保護認定資格の魅力全国各地から受講(組織管理者・経営者クラス~大学生)いただいております。時間及び費用において合理的に学べ、組織及び
Siv3DSiv3D:創造のためのC++フレームワークsiv3d.github.ioゲーム開発環境を良くしたい趣味でゲーム作りをしているのですが、最近、使用するソフトを変えました。その名も「OpenSiv3D」。今まで使用していたDXライブラリは、当たり判定(モノとモノがぶつかるプログラム)を作るのが大変でした。しかし、このOpenSiv3Dは当たり判定が、簡単に作れるのです!OpenSiv3Dを試しに触ってて、これはすごい!と感動しました。この時、DXライブラリからOpen
DXライブラリゲームプログラム講座dxlib.xsrv.jp趣味でゲームを作っています。開発環境はDXライブラリ。Unity使いなよ!という意見がありますが、C++に慣れたいので、DXライブラリを使っています。C++を使いこなせたら、自信がつくと思うんですよね
こん◯◯は!サロン・ププルのゆかりです!なんでしょね、風強すぎません?最近😱花粉症でつらい人も多いですね!私も例にもれずです💦さてさて、カルシウムですが、カルシウムっていうと=骨!の印象が強いですよね。ま、これだけみても、妊活に必要なことは明らかではありますが。お腹で新しい命、小さな身体が作られていく上で大切ですよね✨でもそれだけじゃないんです。妊活以外でも、年齢が上がれば男女ともに骨の強度が変わってきます。女性はとくに更年期を迎えれば女性ホルモンの分泌が減って骨粗鬆症のリスクが出
【ザ・プレゼンツ・ポジティブパートナーズよりお知らせ】弊社株式会社ザ・プレゼンツ・ポジティブパートナーズは、「一般社団法人日本プライバシー認証機構(JPAC)」の認定研修機関です。社会人及び個人においても適切な知識が重要な時代コンプライアンス&リスクマネジメント系現在、企業・団体の各種業界のトップ、管理職、一般従業の方々、大学生の方が受講されてます。**********************************【4月~5月】スケジュールNEW*
【ザ・プレゼンツ・ポジティブパートナーズよりお知らせ】弊社株式会社ザ・プレゼンツ・ポジティブパートナーズは、「一般社団法人日本プライバシー認証機構(JPAC)」の認定研修機関です。最新情報コンプライアンス・リスクマネジメント系現在、企業・団体の各種業界のトップ、管理職、一般従業の方々、大学生の方が受講されてます。**********************************【3
どっかで見て「この提案、実装されて欲しいなぁ」と思ってたのが、C++23で採用されていたようです。P0847R7Deducingthisちょっと面倒なのでサンプルコードは書かないけど(というか↑見て)、これがあれば非const版とconst版でほぼ同じコードのメンバ関数とかを、hoge(thisT&self)とか書いてテンプレートにまとめられる。さらに、CRTPが、CuriouslyRecurring(不思議に再帰)する必要が無くなり、これまたthisをテンプレートに
Amebaの管理画面に、1年前の今日あなたが書いた記事があります【BCCSkelton】「ハノイの塔」プログラム(1)-リソース|BCCFormandBCCSkeltonのサポートセンター(ameblo.jp)が載っていました。当時はまだBCCFormandBCCSkeltonでプログラミングしてたのですね。懐かしいな。ps.このころからC#を学習し始め、どっぷりつかってしまいます。その結果、楽な人生を歩み始め、C++のコードも書かなくなりました。最近はコン
参ったぁでっかいでっかいIMAGをFFMPEGでencordeするの遅い日本語で説明してるけどもし英語の説明ほしいならメッセージください。I'mexplaininginJapanese,butifyouwouldlikeanexplanationinEnglish,pleasesendmeamessage.おおおおおおおおお豪快に遅いマルチスレッドだ現場でノイズ対策してたおっちゃんの僕には結構きついしごとだ。わけわかんね
今日は、クラスを作るお勉強です。pixmapをつかってこれを動画として保存するというのをやってみます。お題目はCPPFFMPEGを使ってビットマップをMPG4にします。保存するPixmapはナンだっていいのですが動きがないと寂しいじゃないですか"Today,Iamstudyinghowtocreateclasses.Iwilltrytosaveapixmapasavideo.ThetopicisusingC++andFFM
おはようございます。株式会社ザ・プレゼンツ・ポジティブパートナーズの徳永です。(弊社は、日本プライバ認証機構(JPAC)の認定研修機関です)この度、2024年オンラインにてライセンス認定資格講座&試験を開催する運びとなりました。重要なのはベースとなる知識と意識全国各地から受講(組織管理者・経営者クラス~大学生)いただいております。時間及び費用において合理的に学べ、組織及び自己のブランディング向上にお役立ていただければ幸いに存じ
おはようございます。ザ・プレゼンツ・ポジティブパートナーズよりお知らせです。弊社は、日本プライバシー認証機構の研修機関です。以下、臨時開催のお知らせです。(最新情報)【オンライン:Zoom】◆認定CPA個人情報取扱従事者資格研修&試験(1日間:10:00~16:00)*オンラインにて実施料金:24,200円(テキスト、受講料、試験、税金全て含)・11月25日(土)・11月29日(水)*臨時特別開催・12月21日(木)◆認定CPP個人情報
...だいぶ長い間EmbarcaderoC++でプログラム開発をしていません。最後にbcc32c.exeを使ってコンパイルしたのは今年の3月(半年以上前)のECCSkeltonを使ったRenamerで、その後は(C#での開発の為の)MSCompAssのバージョンアップだけだし。まぁ、32bitプログラムコンパイルしかできないフリーのコマンドツール(注)では、もうフリーで64bitターゲットが作成できるVisualStudioが手に入る時代にはついていけないのかもしれませんね。事実、私自
さて、このシリーズのトップはC++による独自塗潰し関数の紹介から始めましょう。ご紹介するのは、20年以上前にツールバービットマップ作成、編集ツール(TBEditor.exe)を作った際に参考にさせていただいたFuzzy氏(注)の塗潰し関数のコードをアルゴリズムをそのままに書き直してみたものです。コメントを多く描いているので、詳細末尾にコードを載せますのではそちらを見てください。注:webでFuzzy氏を探してみたのですが、もう何も引っ掛かりませんでした。残念です。描画アルゴリズムは、
前回C#でコンソールプログラムを書いた後、まだ次のお題が見つかっていなかったので、暇に任せて(C#のプログラムをベースとして)C++でコンソールプログラムを書いてみました。結果論でいうと「文字列操作とコンソールへの文字列表示」の部分を除くとほとんどそのままC#から移植できました。一方、C#ではUnicodeベースのstring型文字列変数が機能が豊富で使いやすく簡単でしたが、C++では2バイト文字のANSI文字列を操作するのは結構面倒だったのと、(コンソールプログラムでユニコードを扱うのは