HSP初心者の俺がゆうなまっぽいゲームを作ろうと思う
魔物をどうやって生み出すかは考え中
HSP初心者が<ゆうなま>っぽいゲームを作る
■ このスレッドは過去ログ倉庫に格納されています
2012/04/28(土) 10:37:31.70ID:4Teh0eDo
2012/04/28(土) 12:54:52.09ID:4Teh0eDo
ゆうなまの掘っているブロックと掘っていないブロックどう判定するのか
謎だ
謎だ
2012/04/28(土) 12:55:32.20ID:4Teh0eDo
ゆうなまの掘っているブロックと掘っていないブロックどう判定するのか
謎だ
謎だ
2012/04/28(土) 12:56:05.42ID:4Teh0eDo
ゆうなまの掘っているブロックと掘っていないブロックどう判定するのか
謎だ
謎だ
5名前は開発中のものです。
2012/04/28(土) 13:08:13.40ID:4Teh0eDo ゆうなまの掘っているブロックと掘っていないブロックどう判定するのか
謎だ
謎だ
2012/04/28(土) 16:49:46.14ID:4Teh0eDo
あ
2012/04/29(日) 11:28:35.64ID:mccNZChT
ゆうなまって動画でしか知らないけど、
0:ブロックなし(掘ったブロック)
1〜6:掘っているブロック
7:掘ってないブロック
こんな感じでないの?
0:ブロックなし(掘ったブロック)
1〜6:掘っているブロック
7:掘ってないブロック
こんな感じでないの?
2012/04/29(日) 15:40:41.50ID:iZDksGt/
ゆうなまってゲームしらないが、テトリスの動いてるブロックと固まってるブロックの扱いの違いとかで応用きくかも とか適当レス
2012/04/30(月) 11:45:00.73ID:nRELCOL0
2012/05/03(木) 14:44:53.68ID:NEVPgAzC
勇者が一度いった通路と
まだいっていない通路は
どうやって判別しているのか
まだいっていない通路は
どうやって判別しているのか
2012/05/03(木) 17:37:36.75ID:9eGww88H
要は魔王のところまでどう勇者を自動でいかせるかだよね?
魔王は最初に位置決めるんだから 「A*アルゴリズム」(エースター)ってのを調べるといいと思う。
魔王は最初に位置決めるんだから 「A*アルゴリズム」(エースター)ってのを調べるといいと思う。
2012/05/04(金) 02:05:28.86ID:ty/DK0gE
>>11
エースターとは?
エースターとは?
2012/05/04(金) 08:44:24.21ID:BeLt5uBy
A*の読み方だよ おれが間違って読んでたから書いといた
2012/05/04(金) 10:21:17.78ID:ty/DK0gE
>>12
センキュー
センキュー
2012/05/04(金) 15:00:54.12ID:EQiybbJm
2012/05/04(金) 16:36:16.63ID:ty/DK0gE
>>15
納得
納得
2012/05/04(金) 23:52:10.29ID:BeLt5uBy
アーッ アナル アルゴリズムと読み間違って…なわけあるかー
2012/05/05(土) 10:10:47.85ID:07SuUf/N
>>17
www
www
2012/05/10(木) 20:22:06.94ID:ZZ1xcYYu
>>1はやってるの?ゆうなまってやったことないけどようつべで見てたらつくりたくなってきたw
2012/05/11(金) 16:18:46.19ID:WVxD7ms5
>>19
あるが、勇者のAIがわからずつまっている
あるが、勇者のAIがわからずつまっている
2012/05/11(金) 18:41:22.49ID:PAZZuyqn
おれA*を勧めたものだけど、A*は最短距離だから違ったな
あのあと興味もって、ファイナルステージの動画見たら寄り道してモンスター倒してたから。
経路探索った基本が最短距離だから、寄り道するAIずばりはないのかな?
あと厳しいこというと、ここのローカルルール的にサイトがあったほうがいいらしいよ
そのもののAIはないんだけど、ゲーム開発者のためのAIっていうオライリーの本に経路探索の話が詳しくのってたよ
動画見ただけだから正確に再現は難しそうだけど、スタート地点→経由地→魔王ってやって、魔王から直でスタート地点にいくならA*でなんとかなりそう
ただ製品は経由地まで、も最短距離じゃないんだよな。
あのあと興味もって、ファイナルステージの動画見たら寄り道してモンスター倒してたから。
経路探索った基本が最短距離だから、寄り道するAIずばりはないのかな?
あと厳しいこというと、ここのローカルルール的にサイトがあったほうがいいらしいよ
そのもののAIはないんだけど、ゲーム開発者のためのAIっていうオライリーの本に経路探索の話が詳しくのってたよ
動画見ただけだから正確に再現は難しそうだけど、スタート地点→経由地→魔王ってやって、魔王から直でスタート地点にいくならA*でなんとかなりそう
ただ製品は経由地まで、も最短距離じゃないんだよな。
2012/05/11(金) 19:05:04.25ID:WVxD7ms5
>>21
詳しい助言サンクス
詳しい助言サンクス
23名前は開発中のものです。
2012/07/21(土) 20:53:37.95ID:adjw6zXw HSPか、俺も初心者だぜー
元々の養分の設定とか考えてマップのサイズにもよるけど
マップエディタがないときつい気がするでござる
元々の養分の設定とか考えてマップのサイズにもよるけど
マップエディタがないときつい気がするでござる
24名前は開発中のものです。
2013/09/16(月) 06:18:40.56ID:cFQgBT/g ゆうなまって何
2013/09/16(月) 07:03:59.43ID:0z6G+V2t
地底最大の作戦
2013/09/16(月) 13:36:15.40ID:aGtV6M1R
HSPより前にPSPっていう言語があってな
そこで人気があったゲーム
そこで人気があったゲーム
2013/09/16(月) 15:31:05.88ID:uFkJLhaR
HSP使いじゃないが、ゲームシステムには興味がある。
ちょっとルールを説明してもらえないかな?
ちょっとルールを説明してもらえないかな?
2013/09/16(月) 15:35:11.45ID:aGtV6M1R
ぐぐれ
2013/09/17(火) 10:24:03.89ID:nd9Mgcbp
「ゆうなま」
1:ゆうなおまえが一番星
2:ゆうやけなま放出中
1:ゆうなおまえが一番星
2:ゆうやけなま放出中
2013/09/17(火) 12:59:10.13ID:u9XGuM+F
今時没落したHSPとか
2013/09/20(金) 23:14:38.94ID:uveWXQ3J
既に>>1が居ないようなので、スレタイの『HSP初心者が』を改め、
『C++で〈勇なま〉っぽいゲームを作る』ということで再利用しますね。
『C++で〈勇なま〉っぽいゲームを作る』ということで再利用しますね。
2013/09/21(土) 01:35:45.52ID:xR7oqrjS
おう、頑張れや
2013/09/21(土) 04:25:29.40ID:v3Zy5yAz
「勇なま」
1:栄勇、なまでお願い
2:勇気を出して飲んだら、なまっぽい
1:栄勇、なまでお願い
2:勇気を出して飲んだら、なまっぽい
2013/09/21(土) 06:58:15.72ID:JvVHJClK
では最初にゲーム内容の確認をしますね。適宜補足、修正をしてください。
プレイヤーは、地下世界を表すタイル状のマップに、
蟻の巣状の迷路を作成していきます。
時々、地上から勇者が冒険にくるので、プレイヤー側は作成した迷路の
どこかに魔王(防衛対象シンボル)を配置します。
以後は基本的にオートマチックにゲームが進行し、
勇者に魔王を連れ去られたらゲームオーバーになります。
プレイヤーは、地下世界を表すタイル状のマップに、
蟻の巣状の迷路を作成していきます。
時々、地上から勇者が冒険にくるので、プレイヤー側は作成した迷路の
どこかに魔王(防衛対象シンボル)を配置します。
以後は基本的にオートマチックにゲームが進行し、
勇者に魔王を連れ去られたらゲームオーバーになります。
2013/09/21(土) 10:29:27.13ID:8w7nNenr
ゲームのキモが抜けてるから全くゆうなまじゃない
地中に「養分」がバラ撒かれている
穴を掘る時に養分を壊すと魔物発生
養分のマスは量が増減し、レベルの高い養分マスからはレベルの高い魔物が出る
養分を吸収・運搬する下級の魔物をコントロールして
養分を一箇所に集めるのがゲームのミソ
ただし直接操作できないのでマップの掘り方を工夫する必要性が生じる
地中に「養分」がバラ撒かれている
穴を掘る時に養分を壊すと魔物発生
養分のマスは量が増減し、レベルの高い養分マスからはレベルの高い魔物が出る
養分を吸収・運搬する下級の魔物をコントロールして
養分を一箇所に集めるのがゲームのミソ
ただし直接操作できないのでマップの掘り方を工夫する必要性が生じる
2013/09/21(土) 18:00:31.09ID:JvVHJClK
>>35
慌てなさるな。
さて、地下マップの未掘削1セルごとに、「養分」「魔分」という量が設定されています。
養分、魔分が含まれるセルをプレイヤーが掘削して通路に変えたとき、
その含有量に応じてその場所に「魔物」が発生します。
養分については、ゲーム開始時に予め分布しているほか、近傍通路での魔物が活動することで
吸収、放出されるほか、勇者との戦闘の結果次第で再散布されることがあります。
つまり、倒された魔物や勇者の亡骸は、新たな魔物を産み出す養分としてリサイクルされます。
魔分については、勇者が魔法やアイテムを使うことにより、近辺の未掘削セルに散布される
ことがあります。これも規定のアルゴリズムで活動している魔物の活動により
吸収、運搬、集積の対象となります。
慌てなさるな。
さて、地下マップの未掘削1セルごとに、「養分」「魔分」という量が設定されています。
養分、魔分が含まれるセルをプレイヤーが掘削して通路に変えたとき、
その含有量に応じてその場所に「魔物」が発生します。
養分については、ゲーム開始時に予め分布しているほか、近傍通路での魔物が活動することで
吸収、放出されるほか、勇者との戦闘の結果次第で再散布されることがあります。
つまり、倒された魔物や勇者の亡骸は、新たな魔物を産み出す養分としてリサイクルされます。
魔分については、勇者が魔法やアイテムを使うことにより、近辺の未掘削セルに散布される
ことがあります。これも規定のアルゴリズムで活動している魔物の活動により
吸収、運搬、集積の対象となります。
2013/09/22(日) 03:57:08.89ID:aiGKsK/e
別スレ建てよう
2013/09/22(日) 14:20:26.76ID:sG+aRWz1
いらん
早くもエターナル臭がぷんぷん
早くもエターナル臭がぷんぷん
2013/09/22(日) 15:53:18.64ID:4KdgXx53
続けます。
魔物は、種類別のアルゴリズムに基づいた養分等の吸収、運搬および成長プログラムを
実行する以外に、他の個体と接触した際には捕食による調整が行われます。
具体的には、食べられる側が保有していた養分などが食べた側に吸収され、
食べられた個体は死亡扱いで消滅する一方で、食べた側は規定のプログラムに基づき、
繁殖して新たな個体を産み出す場合があります。
なお、この食物連鎖による生態系のなかで、魔王を求めて降りてきた勇者の肉体および
活動の影響も、結果的には養分と魔分の形で適正に処理されます。
魔物は、種類別のアルゴリズムに基づいた養分等の吸収、運搬および成長プログラムを
実行する以外に、他の個体と接触した際には捕食による調整が行われます。
具体的には、食べられる側が保有していた養分などが食べた側に吸収され、
食べられた個体は死亡扱いで消滅する一方で、食べた側は規定のプログラムに基づき、
繁殖して新たな個体を産み出す場合があります。
なお、この食物連鎖による生態系のなかで、魔王を求めて降りてきた勇者の肉体および
活動の影響も、結果的には養分と魔分の形で適正に処理されます。
2013/09/22(日) 16:34:32.95ID:aiGKsK/e
それは良いとして、いつになったら作り始めるの?
大志を抱くのはいいけど、書いている処理をいきなり実装するのかな?
2013/09/22(日) 21:06:03.74ID:aiGKsK/e
「説明だけするから作ってくれ」ですか?
2013/09/23(月) 13:31:50.29ID:Kz2U6kXX
勇者が侵入を始める時点にかぎり、魔王を移動させることができます。
勇者は侵入時点では地下迷路の形も、魔王の位置も知り得ませんので、
個性的な探索アルゴリズムを駆使してさ迷いながら魔王を捜します。
その道中で勇者が魔物と接触すると、戦闘によって体力やアイテム等を消耗しますが、
その結果、体力が尽きてしまえば養分と亡骸を残して消滅します。
勇者が回復呪文等を使えば、その近辺に魔分が散布されます。
このため、プレイヤーが産み出した魔物たちは、自らの生存と繁殖を目的に
勇者を攻撃しようと働きますが、魔王は養分も魔分も持っていないため、
誰一人として魔王を守ろうとするものはありません。
勇者は侵入時点では地下迷路の形も、魔王の位置も知り得ませんので、
個性的な探索アルゴリズムを駆使してさ迷いながら魔王を捜します。
その道中で勇者が魔物と接触すると、戦闘によって体力やアイテム等を消耗しますが、
その結果、体力が尽きてしまえば養分と亡骸を残して消滅します。
勇者が回復呪文等を使えば、その近辺に魔分が散布されます。
このため、プレイヤーが産み出した魔物たちは、自らの生存と繁殖を目的に
勇者を攻撃しようと働きますが、魔王は養分も魔分も持っていないため、
誰一人として魔王を守ろうとするものはありません。
2013/09/23(月) 13:59:18.99ID:LZmlaTXa
>>41
お前馬鹿だろ
お前馬鹿だろ
2013/09/23(月) 18:04:02.80ID:T/L+nbDM
>>43
おまえアホちゃうか?
おまえアホちゃうか?
2013/09/25(水) 04:40:34.05ID:gw9JmMKI
プレイヤーが穴を掘るためには『掘パワー』というパラメータを消費します。
掘パワーはゲーム開始時に規定量配備されるほか、『ステージ』と呼ばれる
ミッションクリアごとに、その成績に応じて補充されます。
1つのステージは、規定の戦闘、探索能力が設定された勇者の集団の到来という
形で設定されており、彼らを全滅させることができればステージクリアになります。
ステージが進むごとに勇者は強くなっていくため、補充された掘パワーを活用し、
より強力な魔物を数多く配置できるよう迷路を拡張する必要があります。
(養分魔分の濃縮、勇者に魔分を発散させる、最後は確実に仕留めるなど、
迷路構造の設計にテクニックが要求されます)
8ステージクリアで、ゲーム終了です。
掘パワーはゲーム開始時に規定量配備されるほか、『ステージ』と呼ばれる
ミッションクリアごとに、その成績に応じて補充されます。
1つのステージは、規定の戦闘、探索能力が設定された勇者の集団の到来という
形で設定されており、彼らを全滅させることができればステージクリアになります。
ステージが進むごとに勇者は強くなっていくため、補充された掘パワーを活用し、
より強力な魔物を数多く配置できるよう迷路を拡張する必要があります。
(養分魔分の濃縮、勇者に魔分を発散させる、最後は確実に仕留めるなど、
迷路構造の設計にテクニックが要求されます)
8ステージクリアで、ゲーム終了です。
2013/09/25(水) 21:06:18.63ID:4U3cl5Yv
-------------------------------------------
日記スレ終了
-------------------------------------------
日記スレ終了
-------------------------------------------
2013/09/26(木) 04:46:30.39ID:kJr8YGqM
産み出した魔物および勇者には、各々について保有する養分と魔分に加え、
『体力』が設定されています。この数値は、以下の通り変動します。
・迷路を移動すると、わずかずつですが減少します。腹が減るような意味合いです。
・草食系魔物が土から養分を吸収すると、保有養分増加とともに、体力は回復します。
・肉食系魔物が他の魔物を捕食すると、被捕食者が保有していた魔分養分を引き継ぐとともに、
体力も回復します。
・勇者の場合、回復呪文等を使うと、保有魔分発散か所持品消費と引き換えに体力を回復できます。
・戦闘を行った場合、両者の体力は大幅に減少します。
それぞれの増減幅や体力最大値は、ゲームの難易度に直接影響するため、
テストプレイをしながら調整を行います。
『体力』が設定されています。この数値は、以下の通り変動します。
・迷路を移動すると、わずかずつですが減少します。腹が減るような意味合いです。
・草食系魔物が土から養分を吸収すると、保有養分増加とともに、体力は回復します。
・肉食系魔物が他の魔物を捕食すると、被捕食者が保有していた魔分養分を引き継ぐとともに、
体力も回復します。
・勇者の場合、回復呪文等を使うと、保有魔分発散か所持品消費と引き換えに体力を回復できます。
・戦闘を行った場合、両者の体力は大幅に減少します。
それぞれの増減幅や体力最大値は、ゲームの難易度に直接影響するため、
テストプレイをしながら調整を行います。
2013/09/28(土) 05:41:38.29ID:jGSBR8Wu
さて、ゲームの概要と基本的な流れについては、これぐらいにして、
次の段階として、ゲームシステムの基礎部分の検討に移りたいと思います。
手始めに、ゲームの主要な舞台となる地下迷路のマップデータの持ち方を
考えてみます。
既に述べた通り、地下迷路には最初から散らしてある養分や、ゲームが進むと
散らされる魔分を含む土で充填されており、プレイヤーがつるはしで掘れるように
なっています。この仕様から単純に、
int youbun[Width][Height];
int mabun[Width][Height];
bool digged[Width][Height];
のような感じの2次元配列が必要であると考えられます。
次の段階として、ゲームシステムの基礎部分の検討に移りたいと思います。
手始めに、ゲームの主要な舞台となる地下迷路のマップデータの持ち方を
考えてみます。
既に述べた通り、地下迷路には最初から散らしてある養分や、ゲームが進むと
散らされる魔分を含む土で充填されており、プレイヤーがつるはしで掘れるように
なっています。この仕様から単純に、
int youbun[Width][Height];
int mabun[Width][Height];
bool digged[Width][Height];
のような感じの2次元配列が必要であると考えられます。
2013/09/29(日) 04:51:50.95ID:3plIPMO8
Width,Heightはマップのサイズを決める定数ですが、具体的にどれぐらいにするかというと、
ゲーム中に狭苦しく感じない程度に広ければ十分で、概ね100×100ぐらいで十分だと思います。
#define Width 100
#define Height 100
開発を進めていくときに不都合を感じたら、そのとき訂正すればよいでしょう。
なお、今後のメソッド実装のときには2次元配列を頻繁に参照することになるので、
次のような引数確認用のメソッドをひとつ作っておくと便利です。
bool isInside(int x,int y){
return x>=0 && x<Width && y>=0 && y<Height;
}
ゲーム中に狭苦しく感じない程度に広ければ十分で、概ね100×100ぐらいで十分だと思います。
#define Width 100
#define Height 100
開発を進めていくときに不都合を感じたら、そのとき訂正すればよいでしょう。
なお、今後のメソッド実装のときには2次元配列を頻繁に参照することになるので、
次のような引数確認用のメソッドをひとつ作っておくと便利です。
bool isInside(int x,int y){
return x>=0 && x<Width && y>=0 && y<Height;
}
2013/09/30(月) 20:36:32.90ID:++qhlA+w
>>48で養分、魔分、掘削状態について、何も考えずにint,int,boolとしましたが、
土から生まれる最上級魔物のドラゴンでさえ魔分17で生み出されますので、
養分と魔分に関しては、unsigned char型で十分な気がします。
unsigned char youbun[Width][Height]; // マスごとの養分
unsigned char mabun[Width][Height]; // マスごとの魔分
けち臭い気がするかもしれませんが、セーブデータのサイズにもかかわってきますし、
過剰に集積してしまうとゲーム的に詰んでしまう可能性もあるので、マス目ごとの集積上限を
管理することを念頭におきます。
なお、これらのゲーム開始時の初期値は、mabunについてはすべて0とし、youbunについては、
乱数列を使って適当な割合でばら撒くことにします。
土から生まれる最上級魔物のドラゴンでさえ魔分17で生み出されますので、
養分と魔分に関しては、unsigned char型で十分な気がします。
unsigned char youbun[Width][Height]; // マスごとの養分
unsigned char mabun[Width][Height]; // マスごとの魔分
けち臭い気がするかもしれませんが、セーブデータのサイズにもかかわってきますし、
過剰に集積してしまうとゲーム的に詰んでしまう可能性もあるので、マス目ごとの集積上限を
管理することを念頭におきます。
なお、これらのゲーム開始時の初期値は、mabunについてはすべて0とし、youbunについては、
乱数列を使って適当な割合でばら撒くことにします。
2013/09/30(月) 21:00:56.37ID:Uzqe1u9+
以上、この後の手法は各自で考えてください。
2013/10/03(木) 20:56:59.04ID:cKHSPTzX
その一方で、diggedフラグについては、例えばyoubunかmabunの想定外の値(例えば255)を
マジックナンバーとすることで、独立の配列を持つことを省略する方法もあります。
例えば、掘削後のマスのyoubunを255とするなら、
bool isDigged(int x,int y){
return youbun[x][y]==255;
}
のような書き方が可能です。
この応用で、ちょっと工夫を凝らすため、bool型ではなくshort型の2次元配列を
持つ方法を提案します。変数名はdepthとし、未掘削マジックナンバーを -1とすると、
short depth[Width][Height];
bool isDigged(int x,int y){
return depth[x][y]!=-1;
}
のような実装になります。depth配列の全要素をゲーム開始時に-1で初期化しますが、
勇者の侵入口のみ0にしておきます。
なぜこのようにするかは、この後で説明します。
マジックナンバーとすることで、独立の配列を持つことを省略する方法もあります。
例えば、掘削後のマスのyoubunを255とするなら、
bool isDigged(int x,int y){
return youbun[x][y]==255;
}
のような書き方が可能です。
この応用で、ちょっと工夫を凝らすため、bool型ではなくshort型の2次元配列を
持つ方法を提案します。変数名はdepthとし、未掘削マジックナンバーを -1とすると、
short depth[Width][Height];
bool isDigged(int x,int y){
return depth[x][y]!=-1;
}
のような実装になります。depth配列の全要素をゲーム開始時に-1で初期化しますが、
勇者の侵入口のみ0にしておきます。
なぜこのようにするかは、この後で説明します。
2013/10/05(土) 13:44:44.01ID:HeYyFSsK
マップデータに対する主要な変更操作は、プレイヤーの指示による「掘削」です。
ただしルール上、どの地下空間も勇者が侵入する入り口とつながっていないといけませんので、
どこでも好き勝手に掘ることは出来ないように処理します。
そのためには「プレイヤーが掘削しようとした地点が、掘削可能か否か」を判定することからはじめます。
必要十分条件は、「その地点が見掘削」かつ「その4つのとなりのいずれかが掘削済み」ですので、
bool canDig(int x,int y){
if(!isInside(x,y) || isDigged(x,y)) return false;
if(isInside(x-1,y) && isDigged(x-1,y)) return true;
if(isInside(x+1,y) && isDigged(x+1,y)) return true;
if(isInside(x,y-1) && isDigged(x,y-1)) return true;
if(isInside(x,y+1) && isDigged(x,y+1)) return true;
return false;
}
というようなアルゴリズムで判定することができます。
ただしルール上、どの地下空間も勇者が侵入する入り口とつながっていないといけませんので、
どこでも好き勝手に掘ることは出来ないように処理します。
そのためには「プレイヤーが掘削しようとした地点が、掘削可能か否か」を判定することからはじめます。
必要十分条件は、「その地点が見掘削」かつ「その4つのとなりのいずれかが掘削済み」ですので、
bool canDig(int x,int y){
if(!isInside(x,y) || isDigged(x,y)) return false;
if(isInside(x-1,y) && isDigged(x-1,y)) return true;
if(isInside(x+1,y) && isDigged(x+1,y)) return true;
if(isInside(x,y-1) && isDigged(x,y-1)) return true;
if(isInside(x,y+1) && isDigged(x,y+1)) return true;
return false;
}
というようなアルゴリズムで判定することができます。
2013/10/05(土) 16:31:01.60ID:pQSHmq99
さて、ゲームの概要と基本的な流れについては、これぐらいにして、
次の段階として、ゲームシステムの基礎部分の検討に移りたいと思います。
手始めに、ゲームの主要な舞台となる地下迷路のマップデータの持ち方を
考えてみます。
既に述べた通り、地下迷路には最初から散らしてある養分や、ゲームが進むと
散らされる魔分を含む土で充填されており、プレイヤーがつるはしで掘れるように
なっています。この仕様から単純に、
int youbun[Width][Height];
int mabun[Width][Height];
bool digged[Width][Height];
のような感じの2次元配列が必要であると考えられます。
次の段階として、ゲームシステムの基礎部分の検討に移りたいと思います。
手始めに、ゲームの主要な舞台となる地下迷路のマップデータの持ち方を
考えてみます。
既に述べた通り、地下迷路には最初から散らしてある養分や、ゲームが進むと
散らされる魔分を含む土で充填されており、プレイヤーがつるはしで掘れるように
なっています。この仕様から単純に、
int youbun[Width][Height];
int mabun[Width][Height];
bool digged[Width][Height];
のような感じの2次元配列が必要であると考えられます。
2013/10/07(月) 09:54:38.05ID:kL3YAyNm
期待age
56名前は開発中のものです。
2013/10/07(月) 09:56:11.85ID:bkgfHQWg 晒しage
2013/10/07(月) 10:14:33.68ID:OihFMSOT
kakiage
2013/10/07(月) 10:43:38.28ID:HiWWBNmC
からあげ
2013/10/07(月) 15:34:19.34ID:OihFMSOT
蛸age
2013/10/07(月) 23:10:51.21ID:QVbcD2sp
なまを作ると言ってるのにどうして揚げたがるんだ
2013/10/08(火) 04:19:56.29ID:iXH+/mAO
だって生を授かるには、生で「大切なもの」を a g e なきゃいけない
6231 ◆bQ58yym6a2
2013/10/16(水) 22:58:34.93ID:CLPttDcX (>>53のつづき)
掘削可能であることが確認できたら、そのマスを掘削済み状態に更新します。
それはつまり、depth[x][y]を-1以外の値にするという意味ですが、具体的にいくつにするかというと、
「周囲の掘削済みマスのdepth値に1を足したもの」を入れていきます。
プログラムで書く場合は、例えば以下のような書き方ができます。
void dig(int x,int y){
int min=Width*Height;
int d;
d=depth[x-1][y]; if(d!=-1 && d<min) min=d;
d=depth[x+1][y]; if(d!=-1 && d<min) min=d;
d=depth[x][y-1]; if(d!=-1 && d<min) min=d;
d=depth[x][y+1]; if(d!=-1 && d<min) min=d;
depth[x][y]=min+1;
}
掘削可能であることが確認できたら、そのマスを掘削済み状態に更新します。
それはつまり、depth[x][y]を-1以外の値にするという意味ですが、具体的にいくつにするかというと、
「周囲の掘削済みマスのdepth値に1を足したもの」を入れていきます。
プログラムで書く場合は、例えば以下のような書き方ができます。
void dig(int x,int y){
int min=Width*Height;
int d;
d=depth[x-1][y]; if(d!=-1 && d<min) min=d;
d=depth[x+1][y]; if(d!=-1 && d<min) min=d;
d=depth[x][y-1]; if(d!=-1 && d<min) min=d;
d=depth[x][y+1]; if(d!=-1 && d<min) min=d;
depth[x][y]=min+1;
}
2013/10/20(日) 06:40:55.90ID:0tYNwsQx
その一方で、diggedフラグについては、例えばyoubunかmabunの想定外の値(例えば255)を
マジックナンバーとすることで、独立の配列を持つことを省略する方法もあります。
例えば、掘削後のマスのyoubunを255とするなら、
bool isDigged(int x,int y){
return youbun[x][y]==255;
}
のような書き方が可能です。
この応用で、ちょっと工夫を凝らすため、bool型ではなくshort型の2次元配列を
持つ方法を提案します。変数名はdepthとし、未掘削マジックナンバーを -1とすると、
short depth[Width][Height];
bool isDigged(int x,int y){
return depth[x][y]!=-1;
}
のような実装になります。depth配列の全要素をゲーム開始時に-1で初期化しますが、
勇者の侵入口のみ0にしておきます。
なぜこのようにするかは、この後で説明します。
マジックナンバーとすることで、独立の配列を持つことを省略する方法もあります。
例えば、掘削後のマスのyoubunを255とするなら、
bool isDigged(int x,int y){
return youbun[x][y]==255;
}
のような書き方が可能です。
この応用で、ちょっと工夫を凝らすため、bool型ではなくshort型の2次元配列を
持つ方法を提案します。変数名はdepthとし、未掘削マジックナンバーを -1とすると、
short depth[Width][Height];
bool isDigged(int x,int y){
return depth[x][y]!=-1;
}
のような実装になります。depth配列の全要素をゲーム開始時に-1で初期化しますが、
勇者の侵入口のみ0にしておきます。
なぜこのようにするかは、この後で説明します。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 性売買「買う側」処罰化と同時に「売る側は処罰せず、支援の対象に」Colabo主催の集会にて [パンナ・コッタ★]
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★7 [BFU★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」 [muffin★]
- NHKの災害情報、閲覧に「ユーザー登録必要」で批判の声多数 [少考さん★]
- 〈NHK督促10倍に強化〉「カーナビも受信料いただきます」方針に自治体が悲鳴…“督促の基準”を大赤字のNHKにきいた [パンナ・コッタ★]
- とろサーモン・久保田「後輩や演者からも評判が悪すぎる」大物MCに意見 「世間が思ってる人間とは真逆」と思い爆発 [muffin★]
- 年収の中央値が400万らしいけど今の御時世こどおじ以外この年収でやっていけないだろ。高市さんどうするの? [472617201]
- 高市早苗さん、トランプにガチで怒られた模様🥺 [931948549]
- たとい高市総理に期待したくても自民党を崩壊させないと日本に未来はない。やっぱり時代はスーフィズム。 [134367759]
- 小林源文(74)「実際に日中戦争になったら先の大戦の沖縄、硫黄島での戦闘のように日本人の恐ろしさを教えてあげるよw」 [237216734]
- 「高市の発言は問題ない⇒50%」「国のために戦う?⇒13%」すまん、こいつら何考えてるんだ? [884040186]
- 【朗報】高市早苗、10代〜50代まで支持率80%超えwwww [279254606]
