最近の記事

Rogueのダンジョン生成アルゴリズムを再現してみる

https://britzl.github.io/roguearchive/,http://www.rots.net/rogue/source/source.htmこれらのサイトにRogueのソースコードが乗っていたので現代風にしてみる 再現方法かなりのごり押し方法です… ①すべてのファイルをWordにコピペする。 ②Map生成アルゴリズムをWordの検索機能で探す。 ③コードを再現して実行してみる。 苦労した事今回初めて他人のコードを一から理解するということを行ったため

    • (備忘録)ナップサック問題を動的計画法で

      paizaでナップサック問題が解けなくてむかついたから勉強した備忘録 ナップサック問題とは「あなたは冒険家で、最大で15キログラムの荷物を持って冒険に出発します。次のアイテムが提供されました。各アイテムの重さと価値は次の通りです。 マップ(Map) - 重さ: 2キログラム、価値: 10ゴールド 食料(Food) - 重さ: 5キログラム、価値: 7ゴールド 斧(Axe) - 重さ: 6キログラム、価値: 5ゴールド ロープ(Rope) - 重さ: 1キログラム、価値:

      • パーリンノイズをChatGPTで学習した備忘録

        ローグライクのマップ生成に使用できるアルゴリズムを探していた時の備忘録 備忘録周囲の4点の値に重さ付けをして、それぞれの線分に対して線形補完を順番に行い、そのグリッドの値を出すイメージ?(違ったらコメントください) 関数の説明 float fade(float t) { return t * t * t * (t * (t * 6 - 15) + 10);} フェード関数は線形補完で使用する2つの値の割合を決定する関数 // グラデーション関数float grad(

        • C++CONSOLEで画面クリアしないで描画ができる!?

           昨日ローグライクを作成していた際、デスクトップで試遊しているときには画面クリアは気になりませんでした。しかし、ノートPCで試遊しているとやはり画面クリアが気になるなと思っておりChatGptに相談をしていました。 Q:C++のコンソールで画面クリアをしないで描画上書きはできないよね A:C++のコンソールアプリケーションでは、通常、画面クリアをせずに描画を上書きすることは難しいです。コンソールウィンドウは通常、テキストベースで動作し、新しいテキストを出力すると古いテキスト

        Rogueのダンジョン生成アルゴリズムを再現してみる

          ChatGptを使用してC++のコンソール用ヘッダーを作る①

          ゲーム制作のため先に描画部分以外のコードを作成し、コンソール上で実行しようと思ったため作成しました。 私はChatGptをアップグレードしていないためGPT-4でなくGPT-3.5を使用してこの記事のコードを作成しています。その際に困ったことや自分で修正しなくてはいけなかった箇所を書いていけたらいいなと思う。 作成したヘッダーの機能今回私がChatGptに作成してもらった機能は以下である ・コンストラクターで画面のサイズを指定できる ・小文字を大文字に変更できる(現在修正中

          ChatGptを使用してC++のコンソール用ヘッダーを作る①

          C++を使用して不思議のダンジョン系マップを作る

          今回から数回に分けてC++を使用してローグライクのマップ生成の方法を記事に残します。普段C言語を使用しているためC++のライブラリは<vector.h>のみ、機能もclass以外はおそらく使用していません。 今回は上の画像のように一つのマップを分割していくやり方で行います。 今回のコードで作れるマップは下記のようなものです。 構造体、クラスの解説#include <stdio.h>#include <time.h>#include <stdlib.h>#include <

          C++を使用して不思議のダンジョン系マップを作る

          C++でファイル書き出しを試してみた

          C++でコードを書いていてやったことのなかったfstreamを使用したファイル書き出しをやってみた。 以下今回使用したコード 生成されたファイルをバイナリーエディタで見てみた結果は… char型の配列は先頭のポインタをファイルに入れることで配列すべてを保存することが出来た。 int型の配列は先頭ポインタをファイルに入れてもアドレスが保存されてしまった。また、'*'をつけてファイルに入れることで1要素を保存することが出来たため、配列すべてを保存するためにfor文でファイルへ

          C++でファイル書き出しを試してみた