トップページgamedev
840コメント373KB

今日から必死で1から全て学んでゲーム作成します

■ このスレッドは過去ログ倉庫に格納されています
0001松田 ◆cobo4pcvHY 03/02/06 21:28ID:+Sp/g0d7
全然言語の知識とかないけれど、

言語の難しさから逃げていては駄目だ!お前はゲームを作りたいのだろ!?
という悟りを開き、今日からプログラム言語を覚え、そして
プログラムツールで作ります!今持ってるものは・・・。

6才年下の弟の持ってる技術(厨2)の教科書。
アクティブベーシック。(vectorより入手)

・・・作れるのだろうか!?もちろん古本屋で買いあさってくるが
(作れ次第、いずれうpします・・・。いつまでかか(ry))
0790名前は開発中のものです。03/08/08 15:01ID:hLqic0Q9
よくみりゃ、凄い数のバグ
60 PRINT "2、サンダー"
70 PRINT "3、ブリザード"
80 PRINT "4、ウォーター"
85 PRINT "5、ライトニング"
90 PRINT "6、アース"
100 PRINT "7、ストーン"
110 PRINT "8、逃げる。(終了)"
120 INPUT "使いたい呪文の番号を記入してください。->",N
130 IF N=8 THEN PRINT "終了します。":GOTO 180
145 A=Int(Rnd()*10+1)
150 IF ANS<N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
152 c=c-A
154 IF ANS>N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
155 c=c-A
0791名前は開発中のものです。03/08/08 16:29ID:7Y5PF2QY
http://minoru_god.tripod.co.jp/


暑さで頭がイカれた夏厨が
わけのわからんホムペを作って調子に乗ってます
みなさんで爆撃して懲らしめましょう   
                    
0792名前は開発中のものです。03/08/08 16:31ID:utM/iXZZ
http://minoru_god.tripod.co.jp/


暑さで頭がイカれた夏厨のふりをした大人物のサイトです
わけのわからんホムペを装ってますがハッキング対策完璧…。
今日も大漁で調子に乗ってるようです。
みなさんで爆撃してもっと彼を喜ばせましょう。  
                    
0793名前は開発中のものです。03/08/08 18:56ID:hLqic0Q9
すいません、途切れたので最初から。今度はバグはないと思います。
#N88BASIC
0 DIM ANS,N,A,b,c
5 b=100
10 c=50
15 RANDOMIZE
30 PRINT "スライムが現れた。"
40 PRINT "呪文一覧"
50 PRINT "1、ファイヤー"
60 PRINT "2、サンダー"
70 PRINT "3、ブリザード"
80 PRINT "4、ウォーター"
90 PRINT "5、ライトニング"
100 PRINT "6、逃げる。(終了)"
115 ANS=Int(Rnd()*5+1)
120 INPUT "使いたい呪文の番号を記入してください。->",N
125 IF N=1 THEN PRINT "ファイヤーを唱えた。":GOTO 145
126 IF N=2 THEN PRINT "サンダーを唱えた。":GOTO 145
127 IF N=3 THEN PRINT "ブリザードを唱えた。":GOTO 145
128 IF N=4 THEN PRINT "ウォーター":GOTO 145
129 IF N=5 THEN PRINT "ライトニングを唱えた。":GOTO 145
135 IF N=6 THEN PRINT "終了します。":GOTO 180
140 PRINT "関係無い文字を入力しないで下さい。":GOTO 120
145 A=Int(Rnd()*10+1)
150 IF ANS<N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
152 c=c-A
154 IF ANS>N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
155 c=c-A
0794名前は開発中のものです。03/08/08 18:57ID:hLqic0Q9
157 A=Int(Rnd()*20+1)
160 IF ANS=N THEN PRINT "クリティカルヒット!スライムに"+Str$(A)+"ダメージ!"
162 c=c-A
170 IF c=0 THEN PRINT "スライム倒した。":GOTO 180
171 IF c<=0 THEN PRINT "スライム倒した。":GOTO 180
175 PRINT "スライムの番、残り体力"+Str$(c)+"":GOTO 190
180 INPUT "",A
185 END
190 A=Int(Rnd()*7+1)
200 PRINT "スライムの攻撃!"+Str$(A)+"ダメージ"
202 b=b-A
205 PRINT "残り体力"+Str$(b)+"。"
210 IF b=0 THEN PRINT "GAME OVER":GOTO 180
220 PRINT "反撃チャンス!":GOTO 115

以上です。しかし、表示されてるダメージよりスライムの体力が多く減るのは何故?
0795名前は開発中のものです。03/08/08 18:59ID:hLqic0Q9
ついでに調べて欲しいのですが・・・
1、クリティカルヒットする呪文が毎回変わってる。
2、呪文以外の番号を打つと、打ち直される。
3、ちゃんと逃げれる。
4、その他(ぉ
0796名前は開発中のものです。03/08/08 19:07ID:wg4lQfjc
>表示されてるダメージよりスライムの体力が多く減るのは何故?
150 IF ANS<N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
152 c=c-A
154 IF ANS>N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
155 c=c-A

この辺で GOTO 170 しなくちゃダメ
飛ばないと152と155と162で3回cを引くことになるから

あとは
210 IF b=0 THEN PRINT "GAME OVER":GOTO 180
これも b<=0 にしないと0より小さくなるとGAMEOVERにならないぞ
他は170と171は171だけでいい
0797名前は開発中のものです。03/08/08 19:13ID:wg4lQfjc
> 1、クリティカルヒットする呪文が毎回変わってる。
> 2、呪文以外の番号を打つと、打ち直される。
> 3、ちゃんと逃げれる。
これはできてると思う
0798名前は開発中のものです。03/08/08 19:24ID:hLqic0Q9
バグさえなければ、これで完成です。
#N88BASIC
0 DIM ANS,N,A,b,c
5 b=100
10 c=50
15 RANDOMIZE
30 PRINT "スライムが現れた。"
40 PRINT "呪文一覧"
50 PRINT "1、ファイヤー"
60 PRINT "2、サンダー"
70 PRINT "3、ブリザード"
80 PRINT "4、ウォーター"
90 PRINT "5、ライトニング"
100 PRINT "6、逃げる。(終了)"
115 ANS=Int(Rnd()*5+1)
120 INPUT "使いたい呪文の番号を記入してください。->",N
125 IF N=1 THEN PRINT "ファイヤーを唱えた。":GOTO 145
126 IF N=2 THEN PRINT "サンダーを唱えた。":GOTO 145
127 IF N=3 THEN PRINT "ブリザードを唱えた。":GOTO 145
128 IF N=4 THEN PRINT "ウォーター":GOTO 145
129 IF N=5 THEN PRINT "ライトニングを唱えた。":GOTO 145
135 IF N=6 THEN PRINT "終了します。":GOTO 180
140 PRINT "関係無い文字を入力しないで下さい。":GOTO 120
145 A=Int(Rnd()*10+1)
0799名前は開発中のものです。03/08/08 19:25ID:hLqic0Q9
150 IF ANS<N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
152 IF ANS<N THEN c=c-A :GOTO 170
154 IF ANS>N THEN PRINT "スライムに"+Str$(A)+"ダメージ!"
155 IF ANS>N THEN c=c-A :GOTO 170
157 A=Int(Rnd()*20+1)
160 IF ANS=N THEN PRINT "クリティカルヒット!スライムに"+Str$(A)+"ダメージ!"
162 IF ANS=N THEN c=c-A :GOTO 170
170 IF c<=0 THEN PRINT "スライム倒した。":GOTO 180
175 PRINT "スライムの番":GOTO 190
180 INPUT "",A
185 END
190 A=Int(Rnd()*7+1)
200 PRINT "スライムの攻撃!"+Str$(A)+"ダメージ"
202 b=b-A
205 PRINT "残り体力"+Str$(b)+"。"
210 IF b<=0 THEN PRINT "GAME OVER":GOTO 180
220 PRINT "反撃チャンス!":GOTO 115

こんな感じで。ほかに付け加えるべき所はありますか?
0800名前は開発中のものです。03/08/08 19:29ID:wg4lQfjc
特に言うことはないな
完成か
0801名前は開発中のものです。03/08/09 13:25ID:L0C8hnQ7
よかったぁ〜。(ホッ
テストプレイしてくださったり、わからない事を教えてくださった皆様。
まことに感謝しております。
最初は聞いてばかりでしたが、完成が近づくにつれ、質問の数も減ったと思っています。(多分)
数あてゲームも既に完成しましたが、まだBASIC言語の勉強は続けるつもりです。
さて、次はどんなゲームを作ろうか、考えただけでワクワクです。
もしよろしければ、またここで、質問させていただけませんか?(まだ聞くつもりか!?)
0802名前は開発中のものです。03/08/09 16:48ID:6cgblPMS
小・中学生の盗撮画像やマンコがいっぱい!!グチョグチョだよ♪
詳しくはこちら→http://e-rebirth.com/af/in.cgi?id=30
0803名前は開発中のものです。03/08/10 03:00ID:y5AJHq8O
いいねぇ〜、活気がでてきたね。
>801

ソースの書き方を勉強してみる気はない?うまく書けば、短く簡潔にまとめられるよ。メンテもしやすくなったりするし。
例えば、
 1・変数名をわかりやすくする。(bとかcじゃね)
 2・配列を使う(125〜129行を1行にまとめちゃえ!)
 3・コメントを入れる(処理のまとまりごとにコメントで区切れば見やすい!)

やっぱ初心者にBASICはいいよなぁ。
0804名前は開発中のものです。03/08/10 10:50ID:ckv5388J
あっ、それ興味あります。
とりあえず、m=魔法、p=プレイヤー、s=スライム、A=?、にしてみました。
配列?ってどうやるんでしょうか? 1,2,3 じゃ無理ですよね。
0805_03/08/10 10:56ID:vxsyuW65
http://homepage.mac.com/hiroyuki45/
0806_03/08/10 11:36ID:vxsyuW65
http://homepage.mac.com/hiroyuki45/jaz04.html
0807_03/08/10 13:14ID:JuRMyw+G
http://homepage.mac.com/hiroyuki45/hankaku09.html
0808_03/08/10 13:22ID:o/11yaxt
http://homepage.mac.com/hiroyuki45/
0809_03/08/10 15:06ID:5c73RWwu
http://homepage.mac.com/hiroyuki45/hankaku09.html
0810_03/08/10 15:31ID:5c73RWwu
http://homepage.mac.com/hiroyuki45/
0811>>2ちゃんねらーの皆さん03/08/10 16:19ID:YugNK1Wg
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)

(1-3件目)
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(4件目)
--------------------------------------------------------------
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)
--------------------------------------------------------------
0812名前は開発中のものです。03/08/11 23:35ID:VXx0na2o
自分の過去を見ているようで
なんか無関係の俺まで感動・・・・
0813名前は開発中のものです。03/08/13 06:46ID:ocvWjygW
初心者用の教科書読んでるみたいだ
A君と博士
0814名前は開発中のものです。03/08/13 10:47ID:vZlpKLxq
C言語やろうと思ってるんですがVisualシリーズは何を買えばいいでしょうか?
学割がきくものを買いたいのですが
0815名前は開発中のものです。03/08/13 11:26ID:IbXgRsQP
>>814
C言語なら一般的にはC++言語が標準的でVisualC++.NET アカデミックが最安6829円で買える。
どういうシリーズがあるか知らないみたいだから言うと、VBはBASIC言語、VC++はC/C++(つまりC言語もその発展型のC++も)言語、VC♯はC言語でネットワークプログラミング中心にできるのが特徴。
0816名前は開発中のものです。03/08/13 11:29ID:IbXgRsQP
追記
名前に「.NET」って付いてるVisualシリーズは2000&XPじゃないと動かないから注意。
ちなみに.NETシリーズのアカデミック版は前バージョンのVC++Ver6.0アカデミックよりも2000円近く安い。
0817名前は開発中のものです。03/08/13 11:58ID:cfv501zV
standard版しかないのでしょうか?
PROのほうがイイと聞いたことがあるのですが
0818名前は開発中のものです。03/08/13 12:11ID:IbXgRsQP
>>817
.NETは今の所スタンダードのみ…っていうか初心者はスタンダード買え。
初心者がプロ買っても宝の持ち腐れだから、普通はスタンダード買って本買って勉強して覚えてから買う物>プロ
0819名前は開発中のものです。03/08/13 12:13ID:cfv501zV
はい、そうします・・・
0820名前は開発中のものです。03/08/13 13:08ID:uaCfrcx3
死ね
0821名前は開発中のものです。03/08/13 14:31ID:X8v9vu4U
いやいや、たいした値段の差はないと思うからpro版買っといた方がイイよ
0822名前は開発中のものです。03/08/13 15:05ID:dYK/yQDi
いきなりパッケージ買わなくてもCは勉強できるぞ。
ボーランドのフリーコンパイラでも使ってみなさい。
無駄な出費になるやもしれんし。
0823名前は開発中のものです。03/08/14 09:11ID:jQ1mC7W5
漏れは初心者の癖に
エンタープライズ版を買った。
0824名前は開発中のものです。03/08/14 09:31ID:ARy9MgF0
引き返すことができなくなったろう?
0825名前は開発中のものです。03/08/14 10:34ID:t4c+MZZr
>>823
守だな。
0826山崎 渉03/08/15 07:58ID:Q998ZG7G
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0827名前は開発中のものです。03/08/16 21:53ID:IPxqEa3W
数当てゲームやってみました。
C言語、ムズカシイです。
変なこといっぱいやってると思いますが、とりあえず動くんで、試してみてください。
ご指摘の方お待ちしております。
0828以下ソースです03/08/16 21:53ID:IPxqEa3W
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>


int main()
{
  int random,answer;

  srand((unsigned int)time(NULL));
  random=rand()%100;

  printf("数当てゲームを開始します。\n0〜99を入力してください。\n");
  
0829以下ソースです03/08/16 21:54ID:IPxqEa3W
while(1){
    scanf("%d",&answer);
    if(answer>=100||answer<0){
      printf("0〜99の数字でお願いします。\n");
      printf("Press any key\n");
      getch();
      exit(1);

      }
    while(1){
      if(answer==random){
        printf("正解です。\n");
        printf("Press any key\n");
        getch();
        return 0;
        }
      else if(answer<random){
        printf("答えはもう少し大きな値です。\n");
        break;
        }
      else if(answer>random){
        printf("答えはもう少し小さな値です\n");
        break;
        }
      }
    }
  }
0830名前は開発中のものです。03/08/19 02:56ID:8T/5ayFD
>>827
ちょっとコメントする時間がないんで、自分好みに書き換えてみた。
比べてみ。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

void main( void )
{
  int random,answer;

  srand((unsigned int)time(NULL));
  random=rand()%100;

  printf("数当てゲームを開始します。\n");
0831続き03/08/19 02:57ID:8T/5ayFD
  while(1){
    printf("0〜99を入力してください。\n");
    scanf("%d",&answer);

    if(answer>=100||answer<0){
      printf("0〜99の数字でお願いします。\n");
    }
    else if(answer==random){
      printf("正解です。\n");
      printf("Press any key\n");
      getch();
      break;
    }
    else if(answer<random){
      printf("答えはそれより大きな値です。\n");
    }
    else if(answer>random){
      printf("答えはそれより小さな値です。\n");
    }
  }

  return 0;
}
083252103/08/19 10:42ID:TxUwJEa1
>>830
なるほど、0〜99以外を入力されたときも続けろということですね。
しかしそのコードだと数字以外を入力されると無限ループに入りますよね?
いえ、当然私が書いたif(answer>=100||answer<0)の部分がいけないのですが…
実は最初は>>830さんが手直されたようなコードだったんです。
ですが数字以外が入力された場合の判定のやり方がよく分からなくて、無限ループしないよう、その場で終了させることにしたのですが…
純粋に0〜99だけを受け付けるようにする場合(その他のアルファベットや改行や記号などを省く場合)どのように書いたら良いでしょうか…
0833名前は開発中のものです。03/08/19 22:41ID:Qq+BHjHC
>>832 scanfの返り値について調べてみるなんてどうよ。
0834名前は開発中のものです。03/08/19 22:46ID:d9fQejak
>>832
scanfの返り値について調べてみるなんてどうよ。
083552103/08/20 06:53ID:9SL4zmeG
>>833-834
…申し訳ありません。
未熟故、もう少し具体的にヒント頂けませんでしょうか。
scanf()は代入された入力項目の数を返すんですよね…
ん。わからないです…そもそも戻り値について調べるってどうやって…
もう一回同じ入門書読んで出直してきますです。
083683303/08/20 12:21ID:TWQmsxwQ
>>835
ごめんな、プロバイダがアクセス規制されちゃってて携帯からしか書き込めないのよ。
この場合、scanfが1以外を返してきたら入力は間違ってるってことね。その場合は入力ストリームstdinをクリアしてやればいい。
0837名前は開発中のものです。03/08/20 13:54ID:wW23h0o7
#include<iostream.h>
#include<conio.h>

class keisan
{
int a;
int b;
int ans;
public:
void input();
void tasu();
void hiku();
};

void keisan::input()
{
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
}

void keisan::tasu()
{
ans = a + b;
cout<<"a + b = "<<ans<<endl;
}
0838名前は開発中のものです。03/08/20 13:55ID:wW23h0o7

void keisan::hiku()
{
ans = a - b;
cout<<"a - b = "<<ans<<endl;
}

int main(void)
{
keisan cla;

cla.input();
cla.tasu();
cla.hiku();

getch();
return 0;
}

こんな感じにクラスって奴を使うんですか?
あと、オブジェクト指向になってますか?
0839名前は開発中のものです。03/08/21 00:49ID:2IFCdjlO
クラスとして間違ってはいないが、良い使い方ではない。
とりあえず、クラスの設計で気がついた点を並べてみる。

・コンストラクタが無い
 このせいで、メンバ変数a,b,ansの初期値が不定になる。
 例えば、Keisan::input()を行わずにkeisan::tasu()やkeisan::hiku()を実行
 すると、謎の数字が表示されてしまう。

・デストラクタが無い
 現状では無くても構わない。が、個人的には常に書くほうが良いと思う。

・cin、coutはクラスの外に出したほうが良い
 一概にはいえないが、「計算」と「出力」のような異なる処理は分離したほ
 うが柔軟なクラスになる。

・メンバ変数ansは必要ない
 cout << "a + b = " << ( a + b) << endl;
 cout << "a - b = " << ( a - b) << endl;
 で十分だろうと。でもこれは、上の三つほどは重要じゃないな。
0840名前は開発中のものです。03/08/21 01:38ID:2IFCdjlO
>>832
char s[ 256];
scanf("%s", s);
のように文字列で受け取って、strtol()関数などで数値に変換。
ところで、「特定のキーのみを受け付ける」のは、C/C++の標準関数では
無理なので、プラットフォーム固有の機能を使わなければならない。
windowsな人は、DirectXにたよっちゃうのが楽だと思う。
■ このスレッドは過去ログ倉庫に格納されています