無料で俺がRPGを作れるようにするスレ

■ このスレッドは過去ログ倉庫に格納されています
03/07/26 20:18ID:PRWX91og
やる気だけはあるぞ。
8955
垢版 |
03/08/07 14:03ID:7Gygqgf9
あとやってみたけど、感覚が狭すぎてジエンが通る隙間ない。

じゃあさ、docomoで配信されてるアプリ作成ツールで作ろうよ!
9052
垢版 |
03/08/07 14:11ID:GidQ3zBf
配置はどんなのがいいのかわからん

アプリ作成ツールってどんな感じで作るのかわからん
書き方が載ってるサイト見つけてくれれば考えるかも
9155
垢版 |
03/08/07 15:10ID:7Gygqgf9
>>90
http://www.geocities.co.jp/SiliconValley-Bay/2972/
どうよ?配置はhttp://www.geocities.co.jp/HeartLand-Asagao/7593/.mobile/test.app.gif
んな感じ。無理言ってたらスマソ。
03/08/07 15:45ID:ZyEF/qyB
if key=1:x-1
if key=2:y-1
if key=4:x+1
if key=8:y+1
if key=3:x-1:y-1
if key=12:x+1:y+1
if key=9:x-1:y+1
if key=6:y-1:x+1
主人公が自在に動くのがいい、と思う
9352
垢版 |
03/08/07 16:46ID:GidQ3zBf
>>92
一応上下左右に動けるようにしますた
ttp://henachoko.homeip.net/uploader/updata/20030807164425.zip

>>91
なんか難しい感じだ それで作ろうとすると時間がかなりかかること必死

配置はまだ適当
9452
垢版 |
03/08/07 18:04ID:GidQ3zBf
ほぼ完成
ttp://henachoko.homeip.net/uploader/updata/20030807174820.zip

 今のところの仕様
動きは上下左右
当たり判定は少し大きめなので当たってねーよってことがあるかと
スコアが200増えるたびにレベルが1増えスピードが上がる
GAMEOVERの時に下を押すとゲーム再開・・・
罠の配置は一定パターン あんまりよくない

こんなところか・・・
なんか改善してほしいことがあったらヨロ
とくに罠の配置だが左上から右下にX座標、Y座標で
x=10,20,30,40,・・・
y=20,10,40,30,・・・
と書くと(10,20) (20,10) (30,40) (40,30) ・・・
の位置になる訳だが なんかいい配置考えてくれ

疲れたので長期休暇をとります
9552
垢版 |
03/08/08 23:28ID:/oh+Sj4R
改造して他のも作ってみますた
ttp://henachoko.homeip.net/uploader/updata/20030808113255.zip

操作は上下左右に動けて
メガネを取ると点数が上がる
●に当たらないようによける
200点ごとにスピードが上がる

かなりバグがある感じ
96山崎 渉
垢版 |
03/08/15 08:08ID:Q998ZG7G
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
973さんへ
垢版 |
03/09/05 17:12ID:lGEWcEh7
3さんのレスが38以後ないですけど、
JDKは結局ダウンロードできたんでしょうか?

>>38
>右上にあるJ2SETM v1.3.1_08 のダウンロードというのをクリックすると
>全て英語になります。

まさかEnglish英語版ってリンク押してないよね?
ダウンロードするときのライセンスの同意を求めるページは英文だけどね。
現在の最新はVersion 1.4.1のようですね。
下のダウンロードページのJ2SE v 1.4.1_05 のダウンロードという項目の
Windows (各国語、米国語を含む)のSDKのダウンロードをクリックして
http://java.sun.com/j2se/1.4.1/ja/download.html
ライセンスに関する英文ページが表示されるので、そこでACCEPTボタンを
クリックしてDownload j2sdk-1_4_1_05-windows-i586.exeをクリックすれば
ダウンロードがはじまると思います。
インストールに関しては下のリンク先にあるインストールガイドを参考にしてみてね。
http://java.sun.com/j2se/1.4.1/ja/install.html
04/02/10 22:39ID:+W/E8UNm
       -----再利用-----
今からここは 俺がRPG作るのを見守るスレ になりますた。

開発環境:ボーランドc++5.5コンパイラー(無料のヤツ)
c++はよく分からんが、cはマッタク分からん程度のスキルです。
9998
垢版 |
04/02/10 22:44ID:+W/E8UNm
絵のつけ方がよく分からんのでコンソール
目標が初代ドラクエ。
#include <iostream>
#include <string>
#include <ctime>
using namespace std;

void myhelp(){
cout<<"wで上移動、dで右移動、aで左移動、xで下移動"<<endl;
cout<<"sで話す、qで座標表示、fで終了"<<endl;
}

void myenc(){ //魔物とエンカウントさせる関数
int b;
srand((unsigned)time(NULL));
b=rand()%10; //10分の1で魔物と出会う
if(b==4){ //4なのは特に意味ない
cout<<"魔物がいる"<<endl;
}
}

void mygo(string myit){
cout<<myit<<"へ進んだ。"<<endl;
myenc();
}

int main(){
string n; //nに押したキーを代入
string myit; //四方向表示
int x,y; //xが横軸、yが縦軸の座標
x=0;y=0; //初期値(0,0)
10098
垢版 |
04/02/10 23:00ID:+W/E8UNm
cout<<"ドラクエっぽいRPG"<<endl;
myhelp();
while(1){
cin>>n;
if(n=="w"){
x++; //キーを押したら、移動先の座標取得
if(x==2){ //立入禁止区域の座標を入力、複数可
//移動先が立入禁止なら行き止まり
x--; //進めないはずなので、1引いて座標あわせとく
cout<<"行き止まりだ。"<<endl;
}
else{
myit="上";
mygo(myit);
}
}
else if(n=="d"){
y++;
if(y==2){
y--;
cout<<"行き止まりだ。"<<endl;
}
else{
myit="右";
mygo(myit);
}
}
10198
垢版 |
04/02/10 23:04ID:+W/E8UNm
else if(n=="a"){
y--;
if(y==-2){
y++;
cout<<"行き止まりだ。"<<endl;
}
else{
myit="左";
mygo(myit);
}
}
else if(n=="x"){
x--;
if(x==-2){
x++;
cout<<"行き止まりだ。"<<endl;
}
else{
myit="下";
mygo(myit);
}
}
10298
垢版 |
04/02/10 23:08ID:+W/E8UNm
else if(n=="s"){
cout<<"その方向には誰もいない。"<<endl;
}
else if(n=="f"){
cout<<"ゲームを終わります。"<<endl;
break;
}
else{
myhelp();
}
}
};
課題はNPC作ることとAPI。本屋にAPIの本置いてないんだが・・・
うpろだ誰か教えてクレクレ
04/02/11 00:10ID:6KcKUVZ5
俺もドラクエ風RPG作りたいので参考にさせてください
自分も同じコンパイラでやりたいと思っています

うpろだ
ttp://gamdev.org/up/upload.php
10498
垢版 |
04/02/11 19:04ID:xqz1E56h
コピペミスとか修正バージョン
ttp://gamdev.org/up/img/232.lzh

APIの解説サイト行っても、CかVC++基準で書かれてていまいち理解しにくい。
とりあえず一週間をめどにコンソール卒業しようと思う

>>103
マターリがんばりませう
04/02/11 20:27ID:IIhh0aZu
釣り堀
10698
垢版 |
04/02/11 21:20ID:xqz1E56h
>>105
釣りじゃないです。
なぜ釣りだと思ったんですか?
04/02/11 22:14ID:PyR1xJwk
ドラクエタイプのRPG(Windows用/ソース付)

http://www.sm.rim.or.jp/~shishido/rpgp.html

スクロール処理とかゲームシステムなどの解説もあり。
10898
垢版 |
04/02/11 23:40ID:xqz1E56h
>>107
ありがとうございます。
ざっと見てみたんですが、APIの命令語と思われるものだらけで手に負えません。
今まで作った物がマッタク使えなくなりそうな悪寒

まだビットマップを表示させるのにてこずってる段階なんで、
そのくらいのクオリティになるのはかなり先になりそうです。
04/02/12 13:44ID:aukATfXt
>>108
>ざっと見てみたんですが、APIの命令語と思われるものだらけで手に負えません。

まあ、「ウインドウ上にグラフィックを表示する」タイプのゲームなら、
当然「APIの命令語と思われるものだらけ」になるわなw でも、APIは
使い方自体はそれほど難しくない(どこにウインドウを出して、どれだけ
の大きさのビットマップを作りどこにビットマップを描画するか、とか
の指定をするだけ)から、少しずつ慣れていけば大丈夫。

まず、「ウインドウをだす」だけのプログラムを作って、そのウインドウ
に適当な色で点を打つ、というあたりからやってみる(これでウインドウ
の出し方とそのウインドウに何かを描く方法がわかる)とよいかも。これ
ができれば、あとはビットマップを作って絵を出すことも簡単にできるよ
うになる。
11098
垢版 |
04/02/12 19:32ID:xscJNd+f
毎回うpろだに頼るのも気が引けるので、サイトスペース借りてみた。
http://www.geocities.co.jp/SiliconValley-Bay/2736/bb1.txt
やっとwindowsアプリの入り口に来れたが、ゲームとは呼べない物になってしまった。

ウィンドウプロシージャにコンソール版のキー取得イベントを詰め込んでみたんだが、
マップスクロールのことも考えると、後で書き直すことになりそう

>>109
命令語(関数?)と、それに付属する引数の種類と数が多いんで、
記憶力のない漏れにはAPIは天敵です。

次はウィンドウ上にドットを表示してみます。
04/02/13 12:27ID:c7MTKmdy
>>110
WinAPIはよく使う命令だけ覚えればおk。
大体どんな機能があるかを覚えといて、使いたいときは本なんかで調べる。
それを繰り返せばいつのまにか覚えてる。
11298
垢版 |
04/02/13 19:11ID:YwOWpj4L
>>111
だいたいの流れが理解できてきたんで、その方向で逝ってみます。

スクリプトなのにコンパイル必要なのと、謎の言語であるという点で
リソース・スクリプトが理解できないんですが、これは放置でもいいのでしょうか?
これが分からなくてビットマップが表示できないです・・・
04/02/13 21:41ID:NsiLkd+i
>>112

リソースから読むんじゃなくて、最初はまず「自分で作ったビットマップ」
を表示する処理を書いてみた方がよいよ。
11498
垢版 |
04/02/13 23:35ID:YwOWpj4L
>>113
自分で作ったビットマップというのは、こういうのでしょうか?↓
http://www.geocities.co.jp/SiliconValley-Bay/2736/c.txt
それとも、リソーススクリプトなしでビットマップ表示ができるということでしょうか?

とりあえず上の方法で簡単なゲームから作ってみようかと思う今日この頃。
11598
垢版 |
04/02/14 00:21ID:0N5qgnUm
×ビットマップ表示ができるということでしょうか?
○ペイントで描いた絵を表示できるということでしょうか?
11698
垢版 |
04/02/14 23:25ID:0N5qgnUm
http://www.geocities.co.jp/SiliconValley-Bay/2736/bb2.txt
キーを押すと、その方向に動く○

ドラクエって作るの簡単な部類だと思うんだが、先は長い・・・・
11798
垢版 |
04/02/16 22:01ID:EaOpAIgY
やっと絵が表示できた。
でもマップチップの並べ方が分からん。
ひたすらBitBltするしかないのだろうか・・
11898
垢版 |
04/02/16 22:19ID:EaOpAIgY
なんか日記みたいなのでRPG作ってる人どんどん参加してください(´・ω・`)
(ツクール除く)
ってことであげ
04/02/16 23:38ID:4tM5r8pl
>98
私もRPG作成しています。製作環境はdelphi6です。
共に頑張りましょう。

http://www.geocities.co.jp/SiliconValley-SanJose/5293/
04/02/17 01:13ID:3jAAI9V7
>98,119
わたしはJavaスレでまったり製作ちゅう。
がんばろうね♪
04/02/17 16:16ID:HV2czGyE
>>98
ゲーム作りの解説してるサイトとか見てる?
検索すればいろいろあるから見た方が良いよ。

あといきなりRPGは厳しいので、簡単なのから作った方が良いよ。

マップチップはループさせて表示すれば。
12298
垢版 |
04/02/17 21:52ID:hWbX7oGp
人がキターー

>>119,>>120
言語違うけどがんばりましょう
どうでもいいけど、この板ってけっこう過疎化してますね・・

>>121
ブックはしてあるんですが、まだあまり見てないです。
directX使っているところが多いので、先にAPI解説サイトかなあ、と。

簡単なのというと、パックマンとかですかね?

forを二重にしたら敷き詰まったんですが、これだと好きな場所に
好きなマップチップを置けないような気がするんです
04/02/18 15:42ID:UkGMdZe5
>98サン
そうですねー。けっこう人少ないですよね。
でも、個人的にはまったりしてていいかな、と思います。

ちなみにわたしも今マップ関係を製作ちゅう。微妙に音楽に浮気ちゅうだけど。
Javaスレも再利用中(占拠中?)。
みんなまったりがんばりましょー!
124名前は開発中のものです。
垢版 |
04/02/18 16:00ID:wGSU8Vo8
>>98
Cで作るとなると覚えることが沢山あって大変だよ…
HSPとかやってみたら?
Cと比べてすげー簡単だし、画像処理関係のAPI揃ってるし。
考え方ってのは一緒だから無駄にはならんよ。
12598
垢版 |
04/02/19 00:59ID:8yMY9wg9
>>123
あんたスゲェよ・・・
俺もマップ製作中だけど、マップを並べるプログラムで手こずってる orz

>>124
他の言語にしたほうが楽なんだろうな、ってのは薄々感づいてるんですが、
ゲームを作ること自体が目的ではないので、もうしばらくはこのまま行ってみようかと。
04/02/19 06:43ID:ZuScVm6q
> forを二重にしたら敷き詰まったんですが、これだと好きな場所に
> 好きなマップチップを置けないような気がするんです

そりゃあforの中で同じマップチップ置く処理しかしなければそうなるさ
例えば2次元配列使ってマップデータを格納しておいて、forの中ではその情報を元にマップチップを描画するとかしないと。
127124
垢版 |
04/02/19 11:10ID:4j3KDMl/
HSPでやってみれば?とかいった人間だが
俺も参加させてもらう。
一応今はHSPで作ってる。
まだゲーム作ったことがないので、あんま役には立てんが
お互い完成までがんばってみよう。

ちっちゃいRPG作成中……

http://henachoko.homeip.net/uploader/updata/20040219105932.zip
ここにHSPだけどマップ表示のサンプルアップした。

map_sam.asがソース。
map_sam.exeが実行ファイル。
終了はウィンドウのXボタンで。
map.bmpが使ったマップチップ。

動かんかったら言って。
12898
垢版 |
04/02/20 23:43ID:WBg2coIl
>>126
ちょっとやってみたんですが、まだ理解不足でコンパイル時にエラー10個くらいでますた。
今はとりあえずBitBltしまくっておいて、マップスクロール時に問題が出てきたら
それでやってみます。

>>127
がんがりませう。
マップは出たんですが、動かないです。ソース見た感じだと、もとから動かない仕様でしょうか?
04/02/21 00:50ID:b1rfLJZj
98もゲムを実行するには何のランタイムが必要ですか?
04/02/21 01:54ID:Jr2f0/ES
>>128
好きな場所にマップチップが置けないってのは解決したの?
131124
垢版 |
04/02/21 10:59ID:SOonC27/
>>128
ああ、マップ表示のサンプルですよ。
動かない、というかキャラクター表示はまだ。

一応マップ表示の原理をHSPで書いてみたんだけど。
>>126の言ってることをやってます。
13298
垢版 |
04/02/21 23:50ID:n2vfldWV
>>129
ランタイムいらないです。コンパイラが必要です。
まだゲームといえない段階なので、もうちょっとできたらexeでうpします。

>>130
好きな場所に置くこと自体はできたんですが、今のまま作っていくと、
マップが大きくなったときに死ねそうです。↓
http://www.geocities.co.jp/SiliconValley-Bay/2736/vvv.txt
>>126氏の方法で挫折したのが↓ エラーイパーイ
http://www.geocities.co.jp/SiliconValley-Bay/2736/vvv1.txt

>>131
bmpファイル一つからマップチップ4つ取り出す方法もあるんですね。
bmpファイルを4つに分けるより効率がいいんでしょうか?
04/02/22 00:16ID:qoGQgaC2
>>132
そりゃaryはintなんだから、HBITMAPつっこもうとすればエラー出るだろう。
この場合で言えば、ary[x][y]にはhBitmapのインデックスだけ入れるべきかと。

まあこのマップ構成ならば、
int ary[3][3] = {0, 0, 0,
0, 1, 2,
0, 0, 0};

としておいて、描画する時は

SelectObject(hBuffer , hBitmap[ary[map_x][map_y]]);

とするのが正しいかと。
マップデータがでかくなってきたら、データをファイルに移してそこから読み込ませるようにすればさらに一歩前進。

あとせっかく配列を使ってるんだから、読み込みとか解放でも一個ずつやらんでループ使った方がいいんでは?

for(int i=0;i<3;i++) DeleteObject(hBitmap[i]);

ちう感じで。
134124
垢版 |
04/02/22 00:20ID:qJjHo9kX
>>132
基本的には、一つの場所(街なら街、洞窟なら洞窟)のチップは全て
一つにまとめるのが普通だと思いますよ。

読み込むときに、「ファイルを探してー>読み込む」という手順を踏むわけですから、
一つにまとめておけば、一回探せば後は読み込むだけです。
13598
垢版 |
04/02/23 00:24ID:yOz6UeEe
>>133
ありがとうございます!できますた!
>マップデータがでかくなってきたら、データをファイルに移して
これはdllというのでしょうか?まだ全然やってない分野です。

>>134
さっそく真似しようとしたんですが、絵をまとめるとソースが長くなる、
ソースまとめると絵がまとめられない、という状況になってます・・

いろいろ問題が出てきてしまったけど、前半最大の山場と思われる
マップスクロール実装にとりかかってみます。
04/02/23 01:41ID:tZlxc2xv
>>135
>>マップデータがでかくなってきたら、データをファイルに移して
>これはdllというのでしょうか?まだ全然やってない分野です。
普通にマップ構造を記述したファイルを読み込むだけだと思うんだけど、
そうしないとマップをちょっといじるだけで再コンパイルせにゃならんし。
13798
垢版 |
04/02/24 19:40ID:+E54f9HV
>>136
リソースからは読み込めたんですが、デメリットしかないので、これではないですよね・・
xxx.txtから読み込めるとしたら、メリットがかなりありそうなんで、もうちょっと調べてみます。

なめらかスクロールは処理が多そうなので、まずは
キーを押したら1マス(32ドット)瞬間移動プログラム↓
http://www.geocities.co.jp/SiliconValley-Bay/2736/vvv4.txt
goto使ってしまった orz
04/02/24 20:01ID:Y7quTbTQ
>xxx.txtから読み込めるとしたら、メリットがかなりありそうなんで、もうちょっと調べてみます。
fopenやfgetsを使ってファイルを操作したことないのか…?
04/02/24 20:03ID:HARgZ9D7
InvalidateRectしてるなら明示的にWM_PAINTにジャンプしなくても次のメッセージループでWM_PAINT呼び出してくれると思うが・・・

もしやるとしても、gotoじゃなくcase WM_KEYDOWNの下にcase WM_PAINTをおいといて、breakを書かない、という風にした方がいいんじゃないかな。
14098
垢版 |
04/02/24 21:07ID:+E54f9HV
>>138
ファイル操作はゲームに関係なさそうだったので、ほとんど勉強してないです。
fopenというのを調べて出直してきます。

>>139
今、gotoなしでやってみたんですが、不正終了?みたいになりました。
>gotoじゃなくcase WM_KEYDOWNの下にcase WM_PAINTをおいといて
こっちでは大丈夫でした。
caseって全部並列なものかと思ってたんですが、順番関係あるんですね
04/02/24 21:28ID:HARgZ9D7
>>140
goto抜いたらbreakつけなきゃダメよ(;´Д`)
breakつけないと、次のcaseラベルが実行されるから、この場合だとWM_CREATEが実行されてまう。
不正終了は多分そのせいかと
04/02/24 21:30ID:HARgZ9D7
>ファイル操作はゲームに関係なさそう

データファイルがないゲームなんてそうそうないと思うが・・・
最低でもセーブデータとか作るためにはファイル操作は不可欠だろう
04/02/24 21:34ID:QzqFx48f
RPGの半分はデータベースで出来ています
04/02/24 22:31ID:kFyAt63U
>>137
>リソースからは読み込めたんですが、デメリットしかないので、これではないですよね・・

いや最終的には、画像などのデータはリソースにまとめたほうが良いよ。
ただしバイナリのリソースね。画像なら、RGBデータの形で持つ、とか。

画像については、RGB配列(DIB)の扱いを練習しておいたほうが良いかも。
キャラクタの透過描画や画面の特殊効果などさまざまな場面で必要になって
くる。
14598
垢版 |
04/02/25 19:38ID:g+59HVuE
>>141
あ、なんとなく理解しました。break;の代わりにreturn 0;でもいいってことですね。

>>142
作り始めた当初は、セーブが必要になるほど長いゲームは作れない気がしてたので。
いざとなったら ふっかつのじゅもん にすればファイル操作いらないな、とか思ってました。

>>143
まだシナリオとか考えてないんで、データベースの半分は手抜きです。になりそう・・

>>144
ぱっと見で難しそうだったんで、まだほとんどやってないですが、ちょっとずつやってみます。
04/02/25 19:52ID:MjBoX65v
>>145
この場合はreturn 0;でも動くけど、出来る限りbreakは書くクセをつけるべきだと思う。
14798
垢版 |
04/02/29 18:24ID:Ycy/2GWo
DIBが理解できなくて停滞中
04/02/29 18:41ID:gj9x0Pg+
素直にJ-RPG使っとけ
14998
垢版 |
04/02/29 19:41ID:Ycy/2GWo
C++でRPG作るのが目標なので、遠慮しときます
04/02/29 20:14ID:CI/gdVj9
>>147
どの辺が分からんの?
15198
垢版 |
04/02/29 21:21ID:Ycy/2GWo
一つのbmpファイルをウィンドウに複数表示はできるのですが、
複数のbmpファイルを表示させようとするとメモリ不足とか言われます
04/02/29 21:30ID:CI/gdVj9
ソースを張ってくれないと何とも言えない
15398
垢版 |
04/02/29 21:49ID:Ycy/2GWo
単一bmpファイル敷き詰め↓
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz.txt
複数bmpファイル表示(コンパイルは通るけれど実行注意)↓
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz1.txt
下のは実行するとやばいので、コンパイルする人もしいたら気をつけてください

何か、根元から間違えてるような気がする。。
04/03/02 17:40ID:W0CJyzOg
マカーのくせに口出ししてごめんね。
WinのAPIはほとんど触ったことないから半分カンなんだけど。

DrawMapの話だけど、せっかく定義してるのにMaparyをつかってないんじゃない?
icは4になってると思うから、添え字が範囲外なんじゃないかしら。
StretchDIBits(hdc , 32*map_x , 32*map_y , iWidth[Mapary[y][x]],(以下同)
みたいにしたかったんじゃないの?

というか、各BMPのサイズが同じなんだから、わざわざ画像からサイズ取得しないでも
StretchDIBits(hdc , 32*map_x , 32*map_y , 32, 32, 0, 0, 32, 32, lpPixel[Mapary[y][x]](以下略)
と書いちゃえばいいような気がする。

そんなカンジでがんばれ〜。
わたしは当分応援モード。
155124
垢版 |
04/03/02 18:49ID:0D6IPbfs
>>153
いきなりRPGは無謀スギかも。
でもがんばってるみたいだから応援するよ。
ちょっと今時間無いんで、時間出来たらマップ表示を
HSPからCに書き直したものをアップするよ。

まあ、そのときには解決してるかもしれんが…

>>154
>というか、各BMPのサイズが同じなんだから、わざわざ画像からサイズ取得しないでも
>StretchDIBits(hdc , 32*map_x , 32*map_y , 32, 32, 0, 0, 32, 32, lpPixel[Mapary[y][x]](以下略)
>と書いちゃえばいいような気がする。
あんまり定数はプログラム中には入れない方がいいと…

小規模ならマクロでも良いかもしれんが、constとかやるのがいいのでは?
ここはBMPからサイズ取得が一番良いかもしれんね。
15698
垢版 |
04/03/02 21:58ID:YGTCiQU4
>>154
混乱してて、Mapary使うの忘れてました。
問題点を分かりやすくするために、StretchDIBitsの部分はとりあえず定数にしてみます。

>>155
javascriptで簡単なゲームは作ったことがあるんですが、C/C++でプログラム組むのは
初めてなんで、かなり無謀だとは思ってます。
マップ表示はたぶんできるんですが、その前に複数のbmpファイルを読み込むことが
できないんです。

デバッガ使ってみたところ、問題点らしきところは発見できたものの、なぜだめなののかが
分からない・・・
04/03/02 22:18ID:euQtmlJ9
>>156
BMPの読み込み(BMPからのDIB作成)は、マップチップなら「ビットマップ
の大きさ」を決めておくと楽。そうすれば自動的にBMPに格納されている
DIBピクセル列の大きさも特定できるから、ただ「ピクセル列までのオフ
セットから決まったバイト数読み込む」だけの処理になるからね。

1枚のBMPからDIBを作成できるようになったら、BMPも「マップチップを縦
に並べたビットマップ」にしておけば、一枚のビットマップから連続して
読み込める(24ビットで横幅が4の倍数なら、横幅×高さ×3バイトずつ
区切って読んでいけばよい)。ただし、この場合はDIBの座標系に注意。
15898
垢版 |
04/03/02 23:19ID:YGTCiQU4
>>157
一週間悩んでたのに、一瞬でできますた。
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz31.txt
複数ファイルが読み込めないと何かが困るような気がしてたんですが、
ドラクエのようなものなら、困ることないですね。
15998
垢版 |
04/03/04 20:15ID:UUYCFgVb
DIB版矢印キー押すと32ドット移動ウェイトつき
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz32.txt
Sleep中は全ての処理が止まるのかと思っていたら、その間入力した
キーを記憶しているらしく、Sleep中のキー入力が反映されてしまう。
04/03/05 02:41ID:dAc27ulc
>>159
タイマー使ってみたら?
自前でフラグ用意してtimeGetTimeではかっても良いだろうけど
16198
垢版 |
04/03/06 17:58ID:9gF+FHHa
timeGetTime使ってみました。
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz35.txt
まだキーが記憶されてしまいます。

MSDN調べてみたら、
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called,
and whether the key was pressed after a previous call to GetAsyncKeyState.
なので、GetAsyncKeyStateを使うこと自体をやめるか、いったん破棄しないといけなかったみたいです
16298
垢版 |
04/03/06 20:21ID:9gF+FHHa
瞬間移動完成。
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz36.txt
微妙にゲームらしきものになってきた。
GetAsyncKeyStateのほうがゲームに適しているとどこかで見たけれど、
押したキーを勝手に記録してしまうため、使いこなせなかった。

次はキーを押したら16ドット移動を2回繰り返すものを作ろうと思う。
すでにDIB使ってるので、たぶん簡単にできるような気がする
04/03/07 01:10ID:gNoMVuak
自分も2月の最初くらいからAPI始めた者です。
使用言語はCで、今のところテトリスとかボンバーマンもどきを作りました。

現在ttp://www.sm.rim.or.jp/~shishido/を見ながら、
DIBを勉強中ですが、かなり苦戦してます。
>>98さんは何で勉強しましたか?良かったら教えて下さい。
04/03/07 12:27ID:/QKwfpo/
>>162
そろそろファイル入出力もかじり始めた方がいいかもね。
DIBが使えるならファイル入出力はそんなに難しくはない・・・はず。
04/03/07 13:40ID:Ha7O6gmU
なんでPeekMessage使ってるの?
16698
垢版 |
04/03/07 14:44ID:/nCa36PZ
>>163
ttp://black.sakura.ne.jp/~third/system/winapi/win.html
ここと、MSDN見てます。
同じ時期に始めてもうボンバーマン作れるってすごい・・・。

>>164
DIBの前に少しかじったんですが、挫折しました。
xxx.iniというファイルを使えばいろいろできそうだけど、絶対パスで指定しなければいけない
ので、使えねー!ってところで思考停止してます。
難しくてトラウマになってるんですが、ここを乗り越えないとしょぼいゲームしか作れなそうなので
ちょっとずつやってみます。

>>165
昔の名残です。if(PeekMessage(&msg , NULL , 0 , 0 , PM_NOREMOVE))があってもなくても
同じだと思うので、使うときのために消していないだけです。
04/03/07 15:08ID:gNoMVuak
>>166
レスありがとうございます。
そこも前から見てたんですが、分からないのです。
でも、同じのを見て出来る方がいるという事は自分の努力が足りないって事ですね。
もう少し修行してきます。

ボンバーマンは全部マスク画像を使ってAND・ORする方法でやったのでそんなに難しくは無かったです。
では。RPG製作頑張って下さい。
16898
垢版 |
04/03/07 17:38ID:/nCa36PZ
>>167
俺もまだよく分かってないんですが、ちょっとずついじってれば使えるようになると思います。
汚くてよければ>>153>>158にソースがあるので、よかったらドゾー


右スクロール時のみ16ドット移動を2回するプログラム
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz38.txt
効率が悪すぎるような気がする。こういうのをスパゲティソースというのかもしれない。

(´-`)。oO(AND ORってなんだろう)
16998
垢版 |
04/03/09 18:14ID:quioYjmo
C/C++始めて一ヶ月たったので、今回はEXEでうp(28.4KB)
http://www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a1.zip

次はキャラ表示をしようと思う。透過処理が難しそう。
04/03/09 20:50ID:nDvOJ8eM
>>169
透過処理はAND OR
04/03/09 22:45ID:sCetmjvX
>>169

透過処理は単に「抜き色を決めてその色以外を転送する」処理をすれば
よいだけ。キャラクタのDIBを1ピクセルずつ背景に転送していっても、
速度的には問題ない。

この場合は32ビットDIBだと楽だね(DWORD単位でアクセスできるから)。
17298
垢版 |
04/03/11 19:38ID:e07lqvXR
>>170
AND ORでググルとグーグルにヌッコロされるのでだめです
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=AND+OR+C&lr=lang_ja

>>171
肝心な部分が分かってないからなのか、実際にやろうとするとなぜかできないです。
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz45.txt
1ピクセルずつ表示もやってみたんですが、俺のPCのスペックのせいか、若干遅く感じました。


ところで、俺はPCゲームはあまりやったことがないのでよく分からないんですが、
キャラが32*32ドットってどうなんでしょうか。どうも小さく感じます。
17398
垢版 |
04/03/11 21:52ID:e07lqvXR
微妙にずれるものの、透過しつつキャラクタのDIBを1ピクセルずつ背景に転送は成功。↓
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz46.txt

なめらかにスクロールさせるためにマップをtimeGetTimeで30msごとに描画しているんですが、
この透過方法だとキャラクタ描画処理が遅いため、歩行アニメーションをつけるときに
いろいろと苦労しそう。

メモリに読み込むときに透過処理をしたほうがよさそうだけど、なぜか透過しない。
17498
垢版 |
04/03/12 20:39ID:grlqwW2o
上がソースで下が実行ファイル
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz50.txt
http://www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a2.zip

問題点:画面がちらつく。キー入力を微妙に記憶してしまう。

次は街を作って、マップ切り替えをしようと思う。
どんなゲームにするかとかもそろそろ考えないといけないけど、そっちは興味がないので
適当に募集中。
175名前は開発中のものです。
垢版 |
04/03/12 21:26ID:qU+SxdKI
>画面がちらつく。
CreateDIBSectionでオフスクリーンバッファを作るんだ!
ダブルバッファリングともいう。

>キー入力を
簡潔に説明するのは難しいんだが、今のキー押下処理→描画処理のやり方は
ゲームのつくりk他としては完全に間違ってる。
ゲームループとか検索してみるとわかるかもしれん。

他のスレのレスからヒントをば。
http://pc2.2ch.net/test/read.cgi/gamedev/1020417733/124
>タイマ(WM_TIMER)は不安定なので普通ゲームには使わないぞ。
>↓ここの1.4.1みたいに処理すべし。
>http://www.microsoft.com/japan/msdn/academic/Articles/DirectX/01/
17698
垢版 |
04/03/13 19:41ID:xCK866zy
>>175
キー入力はできますた。かなり操作性向上

DIBSectionが難しくててこずってます。
本の通りにDIBSectionを使ってるはずなのに、エラーが出るのはなぜだろう。
04/03/14 08:15ID:wW4VHkXB
>>176

コンパイル時のエラーなら、型があっていない(またはSelectObjectなどが返す値を適切にキャストしていない)とか。
04/03/14 17:48ID:a3XrN6fU
>>176
とりあえずエラーを貼り付ける。
17998
垢版 |
04/03/14 22:20ID:13t3R65N
エラー E2034 zz53.cpp 135: 'void *' 型は 'HBITMAP__ *' 型に変換できない(関数 __s
tdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )

エラー出るソース
http://www.geocities.co.jp/SiliconValley-Bay/2736/zz53.txt

(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない
のに、強制終了します。

本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、
そのへんの問題でしょうか。
04/03/14 22:32ID:RZwlVtdf
>>179
>(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない
>のに、強制終了します。

とりあえず、怪しいところをコメントアウトするなり変数の値を表示さ
せるなり(デバッガがあるならブレークポイントを入れる)してどこで
落ちるのか、特定してみた方が良いね。

>本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、
>そのへんの問題でしょうか。

そうだね。
CとC++では、デフォルトの型チェックが違う。
C++でSelectObjectの返すハンドルをGDIのハンドルを保持する変数に
入れたいなら、個別にGDIのハンドルの型に合わせたキャストが必要。

まあ、拡張子をcにしてCのソースとしてコンパイルしても良いかもし
れんがw

ところで「本」って何の本?
18198
垢版 |
04/03/14 23:00ID:13t3R65N
ゲームプログラミング練習帳 という本見てます。

デバッガですが、今問題にしている部分より前の段階ですでに止まってくれるので
使い物にならない状態です。止まる部分も、CとC++の違いのせいの気がします。

Cは全然知らないんですが、見ているサイトも本もCを使ってAPIの解説をしているので、
Cで書き直すのが早いような気がしてきました・・・
04/03/14 23:21ID:gdC9c3eD
>>179
原因は133行目の&lpPixel。
hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , (LPVOID *)(&lpPixel) , NULL , 0);

hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , (LPVOID *)(lpPixel) , NULL , 0);

おかしな指定をしたせいで、lpPixelのポインタの値が変な値に書き換わって壊れてしまっている。
HeapAllocしたときのlpPixelの値と133行目でのlpPixelの値を調べてみれば、壊れているのが分かるはず。
なぜ、上の指定の仕方ではいけないのか、とか、どうして値が壊れるのかとかは、自分で考えてみてね。
04/03/14 23:32ID:gdC9c3eD
あぁ、97行目の
>iOffset = *(LPDWORD)(lpBMP + 10);//iOffset ピクセルが格納されてるアドレス、ここでなぜかデバッガ止まる
でとまるのは、BMPファイルが見つかってないからでしょ。多分。
ちゃんとCreateFileのエラー処理を汁!

あと、
>(HBITMAP)つけてみたらコンパイルは通ったんですが、
これは、Windows的には正しい。Cだと書かなくてもコンパイルと折るけど、
C++は型違いを厳密に見るから、型変換しないといけないわけだ。
184182
垢版 |
04/03/15 00:06ID:mfA2vkrj
ごめn>>182は違った。
CreateDIBSection()なんか久しぶりに使ったから忘れてたよ。

>>179の使い方なら、
hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , NULL , NULL , 0);
でいいんじゃない?一応うごいたよ。
04/03/15 00:14ID:BH49Bw7k
ちうか、CreateDIBSectionで作ったビットマップ使って無いじゃん…
あと、hdcをグローバル変数にするのはよくないと思う。
18698
垢版 |
04/03/15 00:37ID:YR7Ealek
>>182
(LPVOID *)(lpPixel)でもNULLでも動きました。

CreateDIBSectionの第4引数にはポインタのポインタを指定しなければいけないのに、(LPVOID *)(&lpPixel)
だとアドレスのポインタのポインタだから間違いというところまでは分かったんですが、
Cだと(LPVOID *)(&lpPixel)が正しくて、C++だと(LPVOID *)(lpPixel)が正しいということは
ポインタの書き方がCとC++で違うということなんでしょうか。。


>>185
使おうとしてコンパイルエラーが出たので、まずは何もさせずにコンパイルできることを目指してました。
>hdcをグローバル変数にするのはよくない
ローカル変数の呼び出し方がよく分からないので、とりあえずグローバル変数にしてあります。
分かり次第直します。
04/03/15 11:07ID:BH49Bw7k
>>186
>(LPVOID *)(lpPixel)
は間違い。
引数の指定の仕方としては、もとのソースの(LPVOID *)(&lpPixel)が正しい。

ただし、(LPVOID *)(&lpPixel)のままだと、CreateDIBSectioiでlpPixelが上書きされてしまうから
今度は透過処理の部分で今度は止まるよ。
CreateDIBSectionの説明をよく読んで、正しく使うべし。

>ローカル変数の呼び出し方がよく分からないので、とりあえずグローバル変数にしてあります。
まずは、そっちを勉強した方が良いよ。
04/03/16 21:28ID:av2PqUu3
ローカル変数は関数の冒頭で処理を記述する前に宣言する。
C言語の場合はね。
C++はドコでも良いことになっている。
18998
垢版 |
04/03/16 23:08ID:ALMDs/3/
難しくて混乱してきたのでちょっと整理
1.DIBとしてもDDBとしても操作可能なビットマップをCreateDIBSectionで作る
2.デバイスコンテキストを2つ用意する
3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。
4.AからデバイスコンテキストBに表示する部分だけ描画
5.Bから画面に描画

たぶんこうすればいいんだと思うんですが、4くらいで行き詰ってます。


hdcですが、仮引数とか使ってみたんですがだめでした。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況