5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

 /* 簡単なプログラムをウプしよう */

1 :まだ初心者なの:02/06/27 02:02 ID:HvMYma0g
比較的規模の小さい
ゲームやアルゴリズムをUPしたり
語り合ったりするスレッドです。
勉強用ですので、言語の選択についてや
ゲームが面白いかどうかの議論は禁止の方向で。

UPする方は使用言語を明記してください。

どうか盛り上がってください。おながいします。おながいします。

113 :大学1年生:02/07/14 01:47 ID:6shM2PBs
>>108 すいませんでした。

Bool == bool, True == true, False == false, Sint32 == int
Table[] == 消える対象(CElementのポインタ)がはいってるテーブル
RETU == 列, GYOU == 行, SELLNUM = Table[]のサイズ == RETU * GYOU
ぷよぷよみたいな感じで。

処理の流れ

EraseBall()
idxbox[] == 削除予定のTable[]のIndexを保存するための配列
SetSearchFlagとSetEraseFlagで検索したか、削除対象かのフラグをFalseで初期化
Table[]をすべてEraseSearchで何個つながってるか数を検索
つながってた個数が一定数(eraseline)以上なら削除決定
idxbox[]を使い削除対象のインデックスを習得
SetEraseFlagを使いTrueに設定
Table[] = NULLでテーブルから削除

EraseSearch(列の座標,行の座標,ぷよの色みたいな感じ,何個つながってるか,検索したIndexを入れる配列)
テーブルに存在するか、検索済みか、同じ属性かの判定
SetSearchFlag(True)で検索済みに設定
上下左右で再帰して検索
idxbox[]に検索したアイテムのTableのIndexを設定
自分がつながってたことを表すようにnumに1つ足してreturn

つまり3D太郎さんと同じアルゴリズムです。
動く形で全部(一部でも)アップするのはいっぱいファイルがいるので無理です。
かなりわかりにくい説明だと思いますけど、これが限界なんで。
分からなかったらすいません。

114 :名前は開発中のものです。:02/07/14 02:08 ID:???
ぷよぷよとかテトリスは(タイトルを変えても)
実行可能な状態でUPすると著作権侵害に触れるんだっけ?
確か、ブロック崩しはOKだったよね。

115 :名前は開発中のものです。:02/07/14 02:23 ID:???
>>114
ほんと?著作権なの?
意匠権とか、特許じゃなくて??

116 :名前は開発中のものです。:02/07/14 09:55 ID:fsyX9X4c
>>114
でも著作権って、アイデアは保護されないはず。
ソースコードには著作権があるので、
1から作れば問題ないとかあるとか…。

結局のところどうなんだ?

>>114の話もよく聞くし・・・

117 :114:02/07/14 10:36 ID:???
>>115-116
「アルゴリズム」自体には著作権は
認められていないと思うけど、ゲームの
ルール自体には認められているから…
普通に考えて、商用のゲームのコピーを勝手にUPするのはNGかな、と。

2chでは、「ぷよぷよ作ろう」みたいなスレッドが普通に立って
普通にUPされているからちょっと気になった。
でも、このスレには関係の無いことだったかな。汚してスマソ。

118 :名前はデバッグ中のものです。:02/07/14 11:06 ID:???
>>116
なるほど。

|2chでは、「ぷよぷよ作ろう」みたいなスレッドが普通に立って
|普通にUPされているからちょっと気になった。
同意。なんか、違和感を覚えた。
誰もスレで指摘していなかったような感じで。

119 :名前は開発中のものです。:02/07/14 11:51 ID:???
ルールに著作権が認められてるって本当?
判例とかあるのかな?

120 :114:02/07/14 12:11 ID:???
すいません、これで最後にします。
>>119
ゲーム関係の裁判は様々な主張が入り乱れていて
絶対的な判例ってのは、まだ無いと思います。
ルールって表現はマズかった。
だが、ぷよぷよのルール(ゲーム)はプログラムと
何らかの視覚表現があって成立するものだから
プログラムに視覚表現を含めてUPするのは危険だと思う。

121 :名前は開発中のものです。:02/07/14 12:45 ID:???
というか、著作権云々じゃなくて、製作者としての姿勢的にとか道義的にまずいだろ。

122 :名前は開発中のものです。:02/07/18 01:13 ID:???
ちょっと旅行に行ってました。
山に登ろうとした日に台風が来て、もうアホかと。

では、気持ちを新たにUPさせていただきます。
以前話題に出た、逆ポーランド記法への変換アルゴリズムです。
>>61のプログラムが少し進化しました。

()に対応しました。
また、 (-(47 + 12) / 8) のように括弧の前のマイナス記号にも対応してます。
それ以外は>>61と同じです。 + - * / の四則演算ができます。
C言語です。

ソース
http://www.geocities.co.jp/SiliconValley-Cupertino/8770/newMtoB.txt
実行ファイル
http://www.geocities.co.jp/SiliconValley-Cupertino/8770/newMtoB.zip

ソースは見るに値しない状態(きたない)ですが一応あげさせていただきます。
<<続きます>>

123 :名前は開発中のものです。:02/07/18 01:15 ID:???
<<続きです>>

アルゴリズムは () 内の式を再帰で渡していく
というものです。括弧の前のマイナスは
-(8 + 7) → -1 * (8 + 7) という風に変換して渡してます。
自力で無理やり作ったものなので、無駄が多いと思います。

誰か、より完璧なアルゴリズムをご存知でしたら教えていただきたいです。
どちらかと言えば、マ板向きの話題なのかもしれませんが…
また、>>122のプログラムの動作について指摘がありましたらお願いします。

ぷよぷよの話題に関しては、僕の効率の悪い、初心者気合アルゴリズムで
場を荒らしてしまうような気がするので、ROMさせていただきます。口惜しや…

124 :名前は開発中のものです。:02/07/18 01:27 ID:???
>どちらかと言えば、マ板向きの話題なのかもしれませんが…
ム板に訂正…

しかも>>78で自爆レスしてる…
>>76に訂正です。

125 :名前は開発中のものです。:02/07/18 02:25 ID:VUqV/Vc.
>>117 ほか
同人誌と同じようなものだし、別に責められるほどのものではないんでは?

ただ、ぷよぷよアルゴリズムの権利者(って今どこが持ってるんだ?)から
クレームがあるかもしれないことを認識しておく必要があるとは思うが。

126 :名前は開発中のものです。:02/07/18 09:24 ID:???
今はセガがもってるんだっけ?

127 :名前は開発中のものです。:02/07/18 09:39 ID:???
アルゴリズムに認められるのは特許権。
しかも、プログラムをただ公開しただけじゃ、特許権侵害にはならないんじゃなかったっけ?

128 :名前は開発中のものです。:02/07/18 14:04 ID:???
>>122のプログラムに大きなバグがありました。
()に付いているマイナス記号の判定、スペースやタブで
区切って式を入力した際の不具合を修正しました。

修正した実行ファイル
http://www.geocities.co.jp/SiliconValley-Cupertino/8770/newMtoB2.zip

例えば (9+8*7)/6-(-((5-4)*(3+2))) という式を与えた場合の出力は…
(修正前)9 8 7 * + 6 /-1 -1 5 4 - 3 2 + * * * -
(修正後)9 8 7 * + 6 / -1 5 4 - 3 2 + * * -
と、なっています。
まだバグがありそうですし、汚いのでソースのUPは今回は見送ります…

129 :>>128:02/07/18 16:25 ID:???
いろいろと入力してみたけどコンピューターで
計算できる形になってるみたいだしいいんじゃない?
ソースについてのコメントは控える。(w

130 :名前は開発中のものです。:02/07/18 21:01 ID:eG1jD3wM
http://merosuke.tripod.co.jp/project1.zip

131 :名前は開発中のものです。:02/07/18 21:29 ID:???
>>129
コメントありがとうございます。少しだけ自信がつきました…

今のところはバグが見当たらないので
逆ポーランド記法の式を計算する関数も作ってみました。
入力された式を逆ポーランド記法に変換して表示し、計算結果も表示されます。
C言語です。

ソース
http://www.geocities.co.jp/SiliconValley-Cupertino/8770/calculation.txt
実行ファイル
http://www.geocities.co.jp/SiliconValley-Cupertino/8770/calculation.zip

動作などに関する意見や質問があったらよろしくお願いします。

132 :名前は開発中のものです。:02/07/18 21:32 ID:???
>>130
落としてみたのですが、エラーが出て実行できませんでした。

あと、何かを貼り付ける時は簡単なコメント・説明を添えるように
してください…おねがいします。

133 :名前は開発中のものです。:02/07/18 23:33 ID:KrSipdXM
ちょっとソースが汚いかも。
GetPriorityOperator関数でcase文使っているけど、この使い方だったら、
if文使った方がまとまると思うよ。あと、再起してる関数じゃないなら、
部分部分にreturn入れないで、retとかいう変数つくって、
そこに戻り値入れて最後に返してやるようにする。

int GetPriorityOperator(char op)
{
int ret = 0;

if(op == '*') ret = 10;
else if(op == '/') ret = 10;
else if(op == '+') ret = 8;
else if(op == '-') ret = 8;
else if(op == '\0') ret = 0;
else if(op == ')') {printf(")"); ret = 0;}
else printf("GetPriorityOperator(char op); 不正な引数\n");
return ret;
}

134 :名前は開発中のものです。:02/07/18 23:37 ID:???
生成されるコードを考えると、そこのソースは元のままでいい。
出来れば、defaultは除去してその前の段階でキャラクタ検査をした方が良い。

135 :名前は開発中のものです。:02/07/19 08:47 ID:???
>>133-134
レスありがとうございます。

まずは、見やすいプログラムを書くように心がけます。
僕は、まだ生成されるコードの効率とかを
考えるレベルには至っていないのかもしれません…
効率について検索してみたのですが、

>switchは if - elseif …のチェイン(cmp xx jz xx ...)に展開されることもしばしばで、
>こんなものになってしまったらジャンプテーブルに比べて圧倒的に速度が低がするのは想像に硬くありません。
>例えば、switch文の最後に
>  default:
>    __assume(0); // (VCの拡張機能、ここに来ることは有り得ないと言う事)
>等としてやるとVCに於いてはほぼ確実にジャンプテーブルに展開されるようになります(なるそうです…)。

というのがありました。

136 :名前は開発中のものです。:02/07/19 09:45 ID:???
というか、生成されるコードならテーブルに展開するのが一番速いけどな

137 :名前は開発中のものです。:02/07/20 14:19 ID:???
C言語。オセロ。某所より。見て氏ね。
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}

138 :名前は開発中のものです。:02/07/20 20:43 ID:???
>>137
すごいですね。
俺が授業で書いたオセロは200行ちょい。
このプログラムを改行とかしたら40行弱。

・・・あと4年間で何とかしないとな。

139 :名前は開発中のものです。:02/07/20 23:29 ID:???
つーか、このオセロはかなり上級者の書いた物だろ
7行スレでも有名な人が書いた物。

140 :名前は開発中のものです。:02/07/21 00:04 ID:VfOHqT.A
言語の仕様を熟知していれば
ある程度は可能だと思うが。
別にレベルがどうこうじゃないような。
>>137みたいなのはオジさん同士で見せ合うのは
たのしいんだけど、若い人は興味無いんじゃないか?
基本的に「実用テクニック」にはなり得ないから。

141 :名前は開発中のものです。:02/07/21 00:12 ID:???
>>140
勝手に言ってくれるなー
俺もいいかげんおじさんなのか。

142 :名前は開発中のものです。:02/07/21 00:26 ID:???
sou desu YO!

143 :名前は開発中のものです。:02/07/21 00:34 ID:???
あのオセロは割り切り方が凄いんだよ。
実装範囲を選んで、機能を限定してそれ専用にチューニングしてる。
こういうことは結構重要で、出来ない奴は結局ここの技術にこだわりすぎて
全体的に効率悪い物しか作れない。
小手先のテクニックも使ってるけど、それだけだと思ったら大間違いだよ。

144 :名前は開発中のものです。:02/07/21 00:37 ID:???
>>142
10代でおじさんと言われるとは思わなかったYO!

145 :140:02/07/21 00:42 ID:???
>141=138か?
>137のは実行してないからよく分からんが
オセロを満たすのに必要最低限のことしかやってないだろ。多分。
そんなのに興味を持つくらいなら思考ルーチンのひとつやふたつ
を作ってみた方がいいですよ。何年かやってれば自然に出来るようになるし。
駆け出しのうちは手に届くものを優先。

>>143
まあ、これが出来なければあれが出来ない、みたいな話は止めましょうや。

146 :名前は開発中のものです。:02/07/21 00:50 ID:???
>>145 >141=138か?
違う

>のは実行してないからよく分からんが
実行しろよタコ
何もしないで人のプログラムを語るな。
PC対戦付きだボケ

147 :名前は開発中のものです。:02/07/21 00:58 ID:???
140は、「あんなの凄くねぇ。俺のほうが凄いYO!」って自慢したいだけなんだから、そっとしとこうや。

148 :140:02/07/21 09:20 ID:???
>PC対戦付きだボケ

その位は見ただけで分かるよ。

でも、どの程度のチェック漏れがあるのかは分からない。
相変わらず実行はしていないから分からないが
おそらく比較的、遭遇頻度の低いバグは無視しているのだろう。
七行スレって言うくらいだからそんなことを言うのは野暮なんだろうが。
トイプログラムとして見れば面白いし、レベルも高いと思う。

煽る人が居るし、これで最後にする。

149 :名前は開発中のものです。:02/07/21 09:58 ID:???
まぁ、なんつーか、思考ルーチンなんて何年やっても自然に出来るもんじゃないよな
簡単な(要するにテキトーな)思考ルーチンや単なる総当たりなら出来るかも知れないが、
有名なαβ法なんかは自然に思いつくたぐいの物でもないしな。
理論的な思考ルーチンなんかはひとつやふたつなんて言うほど簡単に作れるもんでもない。

150 :名前は開発中のものです。:02/07/21 12:28 ID:???
口を動かすくらいなら手を…ってことじゃないか?
若い人って”出来ないからやらない”じゃん。それはイクナイ。

151 :138:02/07/26 03:09 ID:???
>>145
オセロの思考は趣味のほうで作りましたね。
自分よりは強いけど、どの程度かは分かりませんです。

まだ137のプログラムが読める程度なので4年後が心配だったけど、
上級者と知って少し安心です。
でもプロのレベルがいまいち分からないからやっぱりかなり不安・・・。

学生に>>137を見てほしいからage

152 :名前は開発中のものです。:02/07/26 08:43 ID:???
>>140
むしろ若い人ほど7行でどんなことができるかとか燃えそうな気がするなぁ
64kメガデモみたいなもんですかな

153 :おもしろいものが:02/08/12 16:52 ID:???
見たいのでage。

154 :名前は開発中のものです。:02/08/12 17:27 ID:???
見たい見たいと騒ぐだけで何も作らないクレクレ厨が発生したので sage。

155 :名前は開発中のものです。:02/09/02 20:54 ID:???
>>149
普通のオセロは通常読みと必勝読みと完全読みの3ルーチン持ってると思う

156 :名前は開発中のものです。:02/10/13 14:20 ID:???
>>131のアルゴリズムって
あれで正しいのですか?
実行してみたんですけどちゃんと動いるみたいでした。
今までノベルゲームくらいしか作ったことが無く
こういうプログラムやったこと無いので興味を持ちました。

157 :名前は開発中のものです。:02/10/13 15:59 ID:???
RPG風ダンジョン。DOS/Win用。2468で移動、数字なのが敵、
たおしてくと階段 '/' がでてきて、接触で次フロアへ。終わりはq。

int m[9801],X,Y,a,b,i,j,k,l=99,U[99],V[99],W[99],g,h;E(x,y){for(k=1;k<99;++k)if
(U[k]==x&&V[k]==y&&W[k])return k;return 0;}D(){printf("\n%dHP M=%d %dF\n",l,g,h
);for(j=-3,i=0;i<49;++i){a=X+j;b=Y+i/7-3;putchar(i==24?64:E(a,b)?W[E(a,b)]+48:G
(a,b));j=i%7<6?j+1:(putchar(10),-3);}}G(x,y){if(E(x,y))return (l-=W[E(x,y)])<=0
?exit(puts("YOU LOST\n")):0,--W[E(x,y)]?0:++g,(m[R(49)*2+R(49)*198+g%2*198]=47)
,35;return x<0||x>98||y<0||y>98?35:m[x+y*99];}R(n){return rand()%n;}N(){++h;g=0
;for(i=0;i<99;++i){U[i]=R(99)*2,V[i]=R(99)*2,W[i]=R(8)+1,m[R(49)*2+R(49)*198+i%
2*198]=35;for(j=0;j<99;++j)m[i+j*99]=(i%2+j%2)>1?R(4)<3?35:46:46;}}M(x,y){i=x+X
;j=y+Y;G(i,j)==47?N():G(i,j)==35?0:(X=i,Y=j);}main(){N();for(;;){D();k=getch();
k==56?M(0,-1):k==54?M(1,0):k==52?M(-1,0):k==50?M(0,1):k==113?exit(0):0;}}


158 :名前は開発中のものです。:02/10/13 23:40 ID:???
>>157
マップ広すぎ。
あと、視野(見える範囲)はもっと広くていいと思うぞ。


159 :(   ○   ´ ー `   ○   ) :02/10/14 13:41 ID:oQUDul00
ちょっと太っちゃった…

160 :名前は開発中のものです。:02/10/14 14:11 ID:???
(    ○    ´ ー `    ○     )

161 :名前は開発中のものです。:02/12/20 00:56 ID:TnNLuwnN
ざっと読んでみたんですが少し勉強になりました。
期待ageさせて下さい!

162 :名前は開発中のものです。:02/12/20 01:27 ID:hsTe63tg

<   終 了ーーーーーーーーーーーーーーーー!!!!

  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^――/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllllllllllllll|           ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕          :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\
       ヽー─¬ー〜ー――― :::::::::::::


58 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)