Qt (C++) ベースのマインスイーパー ゲーム

リソースリンク

ゲーム名: マインスイーパー

qtを利用して可視化を実現します。

このプログラムは、Windows システムの古典的なマインスイーパ ゲームからインスピレーションを受けており、ゲーム エクスペリエンスを復元することを目指しています。ただし、私のプログラミング レベルが限られているため、まだ不十分な点があります。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-2ZiCwPm9-1627265532774)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image002.jpg)]

ゲームエリアには、地雷原地雷カウンター(左上隅にあり、残りの地雷の数を記録します)、タイマー(右上隅にあり、ゲーム時間を記録します)が含まれており、一定数の地雷がランダムに配置されます。決められたサイズの長方形の地雷原(初級レベルでは99個)には、正方形に10個の地雷、中級レベルには16マスに16個の地雷と40個の地雷、上級レベルには16*30マスに99個の地雷があります。地雷原のサイズと数はカスタムレベルで自分で設定できます) プレイヤーは地雷原にある地雷原をできるだけ早く見つけ出す必要があります。地雷ではないすべてのマスは地雷を踏むことができません。ゲーム設定のデフォルトはプライマリです。

ゲームの基本操作には、左クリック右クリック左クリック がありますその中で、左ボタンはゲームの進行を進めるために安全なグリッドを開くために使用され、右ボタンは判断を支援するために地雷をマークするか、次のダブルクリックの準備に使用されます。開いている各ブロックは左クリックされます。

左クリック:私のものではないと判断されたブロック上で左ボタンを押すとブロックが開きます。正方形に数字が表示されている場合、その数字は周囲の 3×3 エリア内の地雷の数を表します (通常は 8 グリッド、サイド ブロックに 5 グリッド、コーナー ブロックに 3 グリッド。したがって、掃海艇の最大数は 8 です)。マス目が空 (0 に相当) の場合は、空のマス目に隣接するマス目を再帰的に開くことができますが、運悪く地雷に当たった場合はゲームが終了します。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-Te7KevYq-1627265532776)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image004.jpg)]

右クリック:地雷と判断されたマス上で右ボタンを押すと、地雷をマーク(小さな赤い旗で表示)します。操作を 1 回繰り返すと不確実なグリッドに疑問符が付けられ、操作を 2 回繰り返すとマークが解除されます。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-7iGxwllW-1627265532778)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image006.jpg)]
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-PQcEZp6n-1627265532781)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image008.jpg)]

左クリック ダブルクリック: ダブルクリック位置の周囲のマークされた地雷の数がその位置の数と等しい場合、操作は有効です。これは、その番号の周囲の開いていないすべてのマス目に対して左クリック操作を実行するのと同じです。 。地雷が完全にマークされていない場合、ダブルタップは機能しません。数字の周りに間違った地雷があるとゲームオーバーとなり、間違った地雷には「×」が表示されます。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-3WMY5CrH-1627265532784)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image010.jpg)]
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-fOZBvpF4-1627265532785)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image012.jpg)]

**ゲームは成功です:** すべての地雷が見つかってフラグが付けられ、ゲームにミスがなければゲームは終了し、タイミングは一時停止され、次のように表示されます[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-m892UVcc-1627265532786)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image013.gif)]
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-aPhPYh1m-1627265532787)(file:///C:/Users/ADMINI~1) /AppData/Local/Temp /msohtmlclip1/01/clip_image014.gif)]。

ゲーム開発プロセス:

まず、地雷を埋め、各グリッドの番号を初期化し、ページを初期化します。

次に、左クリックしてグリッドを拡大して計時を開始し、異なる数字を異なる色で表示し、地雷をクリックしてゲームを終了する機能を実現します。

その後、右クリックでフラグと疑問符を挿入する機能や、フラグを挿入して左上の数字から 1 を引く効果が実現されました。

次に、ゲームの成否を判定する機能を実装します。(ただし、欠点は、すべての地雷が正しくマークされ、すべてのグリッドが判明した後でのみ成功を確認できることです)

最後に、左ボタンをダブルクリックする機能を実現します。

弱点: 成功は、すべての地雷にフラグが立てられ、誤った判断がない場合にのみ判断されます。しかし、実際には、元のソフトウェアでは、レイ以外のすべてのグリッドを見つける必要があるだけであり、レイのグリッドがマークされているかどうかについての要件はありません。

また、ゲームオーバーの際は、ゲームオーバーと同時にアイコンが切り替わるのではなく、1秒ごとに判定されるため、アイコンの切り替えが少し遅くなります。改善の余地。

ゲーム終了時にアイコンを切り替えるのではなく、1秒ごとに判定されるため、切り替えは少し遅くなります。改善の余地。

おすすめ

転載: blog.csdn.net/jinniulema/article/details/119103776