C++によるコンソール版博餅ゲームの実装
コンソールにおけるサイコロの描画処理
C++のコンソールアプリケーションでは、GUIのように自由に図形を配置することはできませんが、文字と色を組み合わせることでサイコロを視覚的に表現できます。Windows APIのSetConsoleTextAttributeを利用して、出力の文字色を動的に変更する関数を定義します。4の目は赤色、それ以外は青色で描画し、枠線は白色とすることで、伝統的 ...
6月28日 20:00 投稿
Pocoライブラリを用いたC++ UDPネットワークプログラミング
Pocoライブラリは、ネイティブソケットの上位レイヤーに位置するC++用ネットワークフレームワークです。生のソケットと比較して性能面ではやや劣るものの、安全性と実用性に優れ、簡潔なAPIを提供します。UDPプロトコルでは、受信側がデータを適時に取得できない場合、そのデータは失われます。
環境セットアップ
sudo apt-get install libpoco-dev
ポート514に関する注 ...
6月28日 18:23 投稿
AtCoder Beginner Contest 170の問題解説と実装
問題Dの解法
整数配列Aが与えられたとき、他の全ての要素で割り切れない要素の数を求める問題です。配列サイズは最大2×10^5です。
解法としては、各数値の出現頻度を記録し、各要素の約数を調べて他の要素で割り切れるか判定します。重複要素がある場合に注意が必要です。
#include<bits/stdc++.h>
using namespace std;
const int MAX = 1e6+5;
int main() {
...
6月28日 02:43 投稿
Visual Studioのpragma指示子によるライブラリ自動リンク
『Game Engine Architecture』には次のように記述されています:
"Visual Studioは、エグゼキュータブルにリンクすべきライブラリを指定するために、様々な「魔法のような」手法を採用しています。例えば、ソースコード内に特殊な#pragma命令を記述することで、リンカーに対して特定のライブラリを自動的にリンクするよう指示できます。このため、「追加の依存ファイ ...
6月27日 22:19 投稿
UE5 C++ 実装:星屑リソースを管理するインベントリシステム
1. データ構造の設計
インベントリは「内部データ」と「表示データ」の二層構造で構成します。
1.1 内部データ(高速検索用)
// 星屑ID → 総保有量
TMap<FName, int32> TotalAmounts;
// 星屑ID → 使用中スロット数
TMap<FName, int32> SlotUsage;
TMapを採用した理由は、UEのガベージコレクションと相性が良く、Find関数を使えば存在チェックも高速に行え ...
6月27日 18:59 投稿
文字配列の反転操作
問題概要
文字配列を反転させる関数を実装します。入力は文字配列 s で、以下の条件を満たす必要があります:
追加の配列を割り当てない
入力配列をその場で変更
O(1) の追加メモリのみ使用
入力例
<strong>入力:</strong>s = ["h","e","l","l","o"]
<strong>出力:</strong>["o","l","l","e","h"]
<strong>入力:</strong>s = [" ...
6月27日 01:32 投稿
CF251A 直線上の点の解説
問題文
Petyaは点が大好きです。彼の母親は彼に数直線OX上のn個の点を与えました。Petyaは、最も遠い2点間の距離がd以下となるような3つの異なる点を選ぶ方法がいくつあるか知りたいです。3つの点の順序は関係ありません。
入出力形式
入力
最初の行には2つの整数n (1 ≤ n ≤ 105) と d (1 ≤ d ≤ 109) が含まれます。次の行には、Petyaが持つ点のx座標を表すn個の整数x1, x ...
6月27日 00:38 投稿
ビルダーパターン
このパターンはよくあるカプセル化に感じる... シンプルファクトリよりどこが優れているのか分からない
ビルダーパターン
モチベーション
複雑なオブジェクトの生成プロセスとその表現を分離し、同一の生成プロセスで異なる表現を持つオブジェクトを生成できるようにする
多くの部分や設定オプションを含む複雑なオブジェクトを生成する必要があり、かつ生成プロセスを ...
6月26日 23:01 投稿
QtのQWidgetActionを用いた高機能カスタムメニューの実装
Qtで標準的なメニューを実装する場合、QMenuとQActionの組み合わせに加え、QSS(Qt Style Sheets)を適用することである程度の見た目のカスタマイズが可能です。しかし、セキュリティソフトやシステム管理ツール(360セキュリティやPCマネージャーなど)で見られるような、リッチなビジュアル効果を持つメニューを実現するには、QWidgetActionを利用してウィジェットレベル ...
6月26日 18:08 投稿
C++の型変換
C言語での型変換
C言語では、代入演算子の両辺の型が異なる場合や、関数の引数と実引数の型が一致しない場合、または戻り値の型と受け取る変数の型が異なる場合には型変換が必要です。
C言語における型変換は主に2つの種類があります:暗黙的な型変換と明示的な型変換です。
暗黙的な型変換:コンパイラが自動的に行います。
明示的な型変換:ユーザーが指定する必要があ ...
6月26日 16:30 投稿