HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0801
はるき遊戯王4未解決


はるき

リンク

2012/8/1(Wed) 03:57:12|NO.48071

のようなトレーディングカードゲームを作成したいです。詳しく書くとまずカード作成がしたいですこれは絵は不要で攻撃力等の簡単なことが記入できればいいです。それを40枚ほどのデッキとして組みそれをシャッフルする機能もほしいです。なんでまずカードを作成するやり方、それをデッキにするプログラム。シャッフルについては一応シャッフルボタンを押してと考えているのでそのプログラムもしりたいです。どうかご協力お願いします。



この記事に返信する


ミント

リンク

2012/8/1(Wed) 07:21:50|NO.48073

前回のスレでアドバイスあったと思うんだけど・・・
まず配列を使いこなさないと超めんどうなので、配列を使えるようにしときましょう。
もし配列がわからなかったら、1つだけでもいいのでデーターを作るとイメージ沸くと思います。



>>デッキにするプログラム
結論から言うとそれ自体はないよ。人によって作り方違うし。
カードを取得したらフラグを立てて、そのフラグが立っているときのみデッキ作成のところで表示される。
みたいに作ればそれっぽく見えると思うけど。

>>シャッフルボタン
シャッフルはよくわからないね。
サイコロの結果みたいなのを収納して反映させればいいと思ったけどそれだと数値ダブった場合だめだね。
ちなみに「プログラムもしりたいです」という丸投げはやめたほうがいいです。
間違っててもいいので「こういう考えがありますけど・・・」と言えると助けてくれる人が増えるかもです。

>>遊戯王みたいな
言うまでもないと思うけど、もろぱくりはNGなので注意。



YSR

リンク

2012/8/1(Wed) 08:25:54|NO.48074

>はるき氏
なぜ二つめの質問立てたし……
サンプルコード欲しい、とかそんな考えじゃなかろうな? ならば待て
自力であれこれ考えるからプログラミングは楽しいんじゃないか?
せめて君がある程度書いたコードがあれば指摘もできるんだが……
とりあえずシャッフルしてドローしてカード置いてターンエンドするぐらい
(カードのテキストの効果の処理はせず、おのおのの操作に任せるってこと)
ならそれほどしんどいわけではないはず



cats

リンク

2012/8/1(Wed) 22:47:28|NO.48081

遊戯王したこと無いからルール知りませんがとりあえず40枚シャッフルと
始めの5枚のカード番号取得サンプル。

screen 0,640,480,4 #define MAX 40 randomize dim kekka, MAX sdim card sdim buf,256 repeat MAX value = rnd(cnt + 1) kekka.cnt = kekka.value kekka.value = cnt loop repeat MAX buf+=""+ kekka.cnt+"\n" loop mes "始めの5枚" notesel buf repeat 5 noteget card,cnt mes card loop pos 0,120 :mesbox buf,640,360,0



774

リンク

2012/8/2(Thu) 01:00:34|NO.48083

遊戯王とかデッキとか全然意味が分からないけど、取りあえず
カードゲームっぽい物を作りたいのかな。
急いでゲームを作ってみたいのも分かるけど、もう少し他の人が
どう言う風にコードを書いているのか、1つ1つの命令がどう言う意味なのか、
時間をかけて勉強した方がいいと思う。
HSP には「カードを描く」とか「シャッフルする」とかそう言うのが用意されている
訳ではないので・・
酒飲みながら書いてみたけど、他の人がもう少しまともなサンプルを書いてくれるはず (w


onexit goto *bye #define CX 100 // カードの横方向のサイズ #define CY 150 button gosub "シャッフル", *sh cardNo(0)=0,1,2,3,4,5,6,7,8,9 // カード番号 power(0)=0,11,22,33,44,55,66,77,88,99 // 戦闘力 for i,0,10 posy(i)=rnd(50) // Y 方向のズレ量をランダムで決める next move(0)=210,190,171,153,136,120,105,91,78,66,55,45,36,28,21,15,10,6,3,1,0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210 repeat redraw 0 // チラツキ防止 color 255,255,255 : boxf for i,0,10 // 何番のカードが選択されているか調べる if(100+30*i < mousex) & (mousex < 100+30*(i+1) ) & (200 < mousey) & (mousey < 200+150) { cardsel=i _break // for 文を抜ける } else{ cardsel=-1 // 選択されていない場合は -1 にしておく } next stick key if (key&256) { // 左クリックで選択されたカードを一番右へ移動 if (cardsel !=-1) { for k,0,41 redraw 0 color 255,255,255 : boxf for i,0,10 if i != cardsel{ x=100+30*i : y=200+posy(i) color 0,0,0 : boxf x,y,x+CX,y+CY color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2 color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(i) } next x=100+30*cardsel : y=move(k) color 0,0,0 : boxf x,y,x+CX,y+CY color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2 color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(cardsel) redraw 1 await 20 next temp1 = cardNo(cardsel) temp2 = power(cardsel) for i,cardsel,9 cardNo(i)=cardNo(i+1) : power(i)=power(i+1) next cardNo(9)=temp1 : power(9)=temp2 } } // カードの表示 for i,0,10 if i != cardsel{ x=100+30*i : y=200+posy(i) color 0,0,0 : boxf x,y,x+CX,y+CY color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2 color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(i) } next // 選択されたカードは一番最後に浮かせて表示する if cardsel != -1{ i = cardsel x=100+30*i : y=200+posy(i)-100 // 100 だけ上に浮かす color 0,0,0 : boxf x,y,x+CX,y+CY color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2 color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(i) } // タイトルバーにカード番号の一覧を表示 output="" for i,0,10 output=output+cardNo(i)+" " next title output redraw 1 // チラツキ防止 await 100 // ループの速度を一定にするため wait ではなく await で 100ms loop stop *bye end *sh // シャッフル for j,0,9 temp1 = cardNo(j) temp2 = power(j) tempNo = rnd(9-j)+1+j cardNo(j)=cardNo(tempNo) : power(j)=power(tempNo) cardNo(tempNo)=temp1 : power(tempNo)=temp2 next return



ONION software Copyright 1997-2023(c) All rights reserved.