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

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

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

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

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

・・・作れるのだろうか!?もちろん古本屋で買いあさってくるが
(作れ次第、いずれうpします・・・。いつまでかか(ry))
0766名前は開発中のものです。03/08/06 09:36ID:PA4bRhvB
>>765
Aが定義されてません

0 DIM ANS,N  →  0 DIM ANS,N,A

>110 PRINT "7、逃げる。"
なんで7で逃げるなのに

>510 IF N=11 THEN PRINT "逃げ出した!":GOTO 550
11で逃げ出したを表示するんだ?
0767名前は開発中のものです。03/08/06 09:57ID:2U3UXzN0
そうですね、ちょっと変かもしれません。
と、言う事で変更しました。
#N88BASIC
0 DIM ANS,N,A
10 RANDOMIZE
20 ANS=Int(Rnd()*7+1)
30 PRINT "スライムが現れた。"
40 PRINT "呪文一覧"
50 PRINT "1、ファイヤー"
60 PRINT "2、サンダー"
70 PRINT "3、ブリザード"
80 PRINT "4、ウォーター"
90 PRINT "6、アース"
100 PRINT "7、ストーン"
110 PRINT "8、逃げる。(終了)"
120 INPUT "使いたい呪文の番号を記入してください。->",N
130 IF N=8 THEN PRINT "終了します。":GOTO 160
140 IF ANS<N THEN PRINT "まったく効果が無いようだ。":GOTO 190
150 IF ANS>N THEN PRINT "まったく効果が無いようだ。":GOTO 190
160 PRINT "スライムを倒した。"
170 INPUT "",A
180 END
190 A=Int(Rnd()*10+1)
200 PRINT "スライムの攻撃!"+Str$(A)+"ダメージ"
210 PRINT "反撃チャンス!":GOTO 120
こんな感じかな?ちなみに140と150は GO TO 190 じゃないとダメージが0になるようです。
0768名前は開発中のものです。03/08/06 10:04ID:PA4bRhvB
>こんな感じかな?ちなみに140と150は GO TO 190 じゃないとダメージが0になるようです。
そりゃそうですよ
>190 A=Int(Rnd()*10+1)
ここでAに1〜10までの数字を入れてるんですから

>130 IF N=8 THEN PRINT "終了します。":GOTO 160
160にいったらスライム倒しちまうぞ

他に問題点はありますか?
0769名前は開発中のものです。03/08/06 10:57ID:2U3UXzN0
>>768
そりゃそうなんですか・・・・
出直してきます。
ちなみに130は投稿後すぐ直しときましたんで、多分もう大丈夫だと思います。
ちょこっと改良したい所があるんで、終ったらまた、ソースの越したいと思います。
0770名前は開発中のものです。03/08/06 19:35ID:2U3UXzN0
とりあえず、相手に与えるダメージを変数にしてみますた。
#N88BASIC
0 DIM ANS,N,A
10 RANDOMIZE
20 ANS=Int(Rnd()*7+1)
30 PRINT "スライムが現れた。"
40 PRINT "呪文一覧"
50 PRINT "1、ファイヤー"
60 PRINT "2、サンダー"
70 PRINT "3、ブリザード"
80 PRINT "4、ウォーター"
90 PRINT "6、アース"
100 PRINT "7、ストーン"
110 PRINT "8、逃げる。(終了)"
120 INPUT "使いたい呪文の番号を記入してください。->",N
130 IF N=8 THEN PRINT "終了します。":GOTO 170
135 A=Int(Rnd()*3+1)
140 IF ANS<N THEN PRINT "スライムに"+Str$(A)+"ダメージ!":GOTO 190
145 A=Int(Rnd()*3+1)
150 IF ANS>N THEN PRINT "スライムに"+Str$(A)+"ダメージ!":GOTO 190
155 A=Int(Rnd()*100+30)
160 IF ANS=N THEN PRINT "クリティカルヒット!スライムに"+Str$(A)+"ダメージ!"
165 PRINT "スライムを倒した。"
170 INPUT "",A
180 END
190 A=Int(Rnd()*5+1)
200 PRINT "スライムの攻撃!"+Str$(A)+"ダメージ"
210 PRINT "反撃チャンス!":GOTO 120

こんな、感じ。RPGの雰囲気は出てると思います。まあ、こんだけですが(汗
後少ししたら、相手と自分のHP作れそう。・・・・・あくまで勘ですが・・
ところでこのスレ、ageてもいいんですかね?
0771名前は開発中のものです。03/08/06 22:38ID:JTND/yTp
なかなかいいかと思う
特に関係ないが 5、 がないのが気になる

俺としてはageてもいいよ
0772名前は開発中のものです。03/08/06 22:52ID:t1xYEgmx
晒しage
0773名前は開発中のものです。03/08/06 23:00ID:qSFAl4DB
>>756
おれもCやってるんだけどまだオブジェクト指向の使い方が良く分からん。
ゆえに評価はできん。
なんとなくどんな概念かはわかったんだけどな
0774_03/08/06 23:26ID:xkLXDOht
http://homepage.mac.com/hiroyuki45/hankaku10.html
0775名前は開発中のものです。03/08/06 23:35ID:wvG73zIT
巨乳好き大集合!
マダムから美少女まで盛りだくさんのおっぱいが・・・
胸フェチ必見。当然モロ見え!
http://55.40.59.72/index.html
0776_03/08/06 23:37ID:xkLXDOht
http://homepage.mac.com/hiroyuki45
0777名前は開発中のものです。03/08/07 01:14ID:cFggxyoV
>>756
オブジェクト化するなら、ゲーム管理と数字管理は別にするべきなんだが、
このコードサイズでは、そこまでしなくてもいいだろう。
CNumberは、ある数値を保持し、外部から渡された数値がそれと一致するかどうかを
チェックできるオブジェクト、になるのかな?そうすると、CNumber::Run()は、main()に
直接配置するか、ゲーム管理オブジェクトが実装することになるか。

あと、CNumberは常に何らかの数値を持たなければならないのだから、
CNumber::InitRandomNumber()はコンストラクタでおこなうべきことでは?
この場合、引数なしのデフォルトコンストラクタは、ないほうがいいかもしれない。
0778名前は開発中のものです。03/08/07 01:21ID:6f3EqmyZ
京大受験希望の知的な女性が出演。
中学生の頃に覚えたオナニーで性感帯はしっかり開発されており
すっかりグッチョリの様子。
無料ムービーはこちらから
親切、安心サイト
http://www.j-girlmovie.com/
0779_03/08/07 03:05ID:LvooB/gQ
http://homepage.mac.com/hiroyuki45/jaz09.html
0780_03/08/07 03:46ID:S+ggGXg5
http://homepage.mac.com/hiroyuki45
0781_03/08/07 04:29ID:bLnqziTa
http://homepage.mac.com/hiroyuki45/
0782名前は開発中のものです。03/08/07 05:58ID:TYLlWGia
☆美女の○○○を見放題(^^)v!☆
http://endou.kir.jp/yuminet/link.html
http://endou.kir.jp/marimo/link.html
0783名前は開発中のものです。03/08/07 07:15ID:ci2OouMS
乳首みれた?
http://homepage3.nifty.com/coco-nut/
078475603/08/08 01:11ID:rkg+siml
>>777
アドバイスありがとうございます。
"ゲーム管理"がまだちょっと漠然とした状態ですが、次はもうちょっと
オブジェクト数の多いゲームを作ってみようと思っています。
0785名前は開発中のものです。03/08/08 10:40ID:hLqic0Q9
#N88BASIC
0 DIM ANS,N,A,b
10 RANDOMIZE
20 ANS=Int(Rnd()*7+1)
30 PRINT "スライムが現れた。"
40 PRINT "呪文一覧"
50 PRINT "1、ファイヤー"
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 170
135 A=Int(Rnd()*3+1)
140 IF ANS<N THEN PRINT "スライムに"+Str$(A)+"ダメージ!":GOTO 190
145 A=Int(Rnd()*3+1)
150 IF ANS>N THEN PRINT "スライムに"+Str$(A)+"ダメージ!":GOTO 190
155 A=Int(Rnd()*50+30)
160 IF ANS=N THEN PRINT "クリティカルヒット!スライムに"+Str$(A)+"ダメージ!"
170 PRINT "スライムを倒した。"
175 INPUT "",A
180 END
190 A=Int(Rnd()*10+1)
195 b=10
200 PRINT "スライムの攻撃!"b-Str$(A)+"ダメージ"
205 if b=0 THEN PRINT "残り体力が減った。"
210 PRINT "反撃チャンス!":GOTO 120

とやったら主人公の体力らしきものが以上に高くなるんですがどうなんでしょうか?
0786名前は開発中のものです。03/08/08 11:30ID:kEzo2gOH
>200 PRINT "スライムの攻撃!"b-Str$(A)+"ダメージ"
これは書き方がおかしいので
200 PRINT "スライムの攻撃!"+Str$(b-A)+"ダメージ"
こう書くか・・・
でも b がたぶん主人公の体力だと思われるので普通に
200 PRINT "スライムの攻撃!"+Str$(A)+"ダメージ"
とやって次の
>205 if b=0 THEN PRINT "残り体力が減った。"
これを
202 b=b-A
205 PRINT "残り体力"+Str$(b)+"。"
とやるか でも
>195 b=10
これを最初の方に書かないと意味ないな
0787名前は開発中のものです。03/08/08 12:14ID:hLqic0Q9
#N88BASIC
0 DIM ANS,N,A,b,c
5 b=10
10 c=30
15 RANDOMIZE
20 ANS=Int(Rnd()*7+1)
30 PRINT "スライムが現れた。"
40 PRINT "呪文一覧"
50 PRINT "1、ファイヤー"
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 170
145 A=Int(Rnd()*10+1)
150 PRINT "スライムに"+Str$(A)+"ダメージ!"
152 c=c-A
153 IF c=0 THEN PRINT "スライム倒した。":GOTO 180
154 PRINT "スライムの番":GOTO 190
155 A=Int(Rnd()*20+1)
160 IF ANS=N THEN PRINT "クリティカルヒット!スライムに"+Str$(A)+"ダメージ!"
162 c=c-A
0788名前は開発中のものです。03/08/08 12:14ID:hLqic0Q9
170 IF c=0 THEN PRINT "スライム倒した。"
175 PRINT "スライムの番":GOTO 190
180 INPUT "",A
185 END
190 A=Int(Rnd()*3+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 120
なんとか,ここまでやりとげる事が出来ました。
しかし、問題があり、ダメージが多すぎて0より低い数値になると、倒せなくなるんです。
バグとかありましたらご連絡を。
0789名前は開発中のものです。03/08/08 13:01ID:kcUizlQe
>しかし、問題があり、ダメージが多すぎて0より低い数値になると、倒せなくなるんです。
>IF c=0 THEN PRINT "スライム倒した。"
IF c<=0 THEN PRINT "スライム倒した。"

>IF b=0 THEN PRINT "GAME OVER":GOTO 180
IF b<=0 THEN PRINT "GAME OVER":GOTO 180

0以下でもIFが真になるようにする

あとクリティカルヒットが出ませんよ
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にたよっちゃうのが楽だと思う。
■ このスレッドは過去ログ倉庫に格納されています