トップページgamedev
1001コメント227KB

ソースを上げるスレッド

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/06 18:18ID:TUTRHoJP
特に特定のスレに当てはまるわけじゃないけど
何となくソースを上げたくなったときに公開するためのスレッド。

# 一種の隔離スレです。
0013ちょちんちゃ01/11/07 05:43ID:???
#include <stdio.h>
#include<string.h>

int a2i(char *meta);
void main()
{
int i,aa;
char meta[256];

gets(meta);

i=a2i(meta);
printf("%d\n",i);
}

int a2i(char *meta)
{
int cnt,keta=0,ans=0,f=1;

for(cnt=0;meta[cnt]!=0;cnt++)
{
if((meta[cnt]-48)<0||(meta[cnt]-48)>9)
{
break;
}
keta++;
f*=10;
}
f/=10;

for(cnt=0;keta!=0;keta--)
{
ans+=(meta[cnt]-48)*f;
f/=10;

cnt++;
}

return ans;
}
どうだコノヤロウ
0014名無しさん@お腹いっぱい。01/11/07 07:05ID:???
このやろう言われても……。素直にatoi()使え。
0015名無しさん@お腹いっぱい。01/11/07 11:01ID:???
>>13
無駄が多くないか?
int a2i(char *meta)
{
  int ans = 0;
  while (*meta >= '0' && *meta <= '9') {
    ans *= 10;
    ans += *meta - '0';
    meta++;
  }
  return ans;
}
0016名無しさん@お腹いっぱい。01/11/07 18:15ID:???
おお!ハンドオプティマイズ!
0017名無しさん@お腹いっぱい。01/11/07 18:55ID:???
定義ブロック
*define

game

;実行ブロック
*start

end
0018名無しさん@お腹いっぱい。01/11/07 19:07ID:???
>17
なんのスクリプト? あと、つまんないよ、それ。
0019名無しさん@お腹いっぱい。01/11/08 00:08ID:FoZhzfZJ
MS-DOS コンソールベースのアクションゲームです!
名前: 「5000ゲッター!」

実行すると、1から順に数字が流れていきますので、タイミングよく、5000で、CTRL + C で止めてください。

#include <stdio.h>

main()
{
int i;
for(i=1;i<=10000;i++){
printf("%5d\n",i);
}
}
0020hpiでいいのが色々出てるから今さらだが01/11/08 00:14ID:???
;ジョイスティックとキーボードの一括取得モジュール
;要なかむらさん作JoyPad.dll
;HSPのstick命令と似たような使い方すれー
;返値は
;左 = 1
;右 = 2
;上 = 4
;下 = 8
;ボタン1(決定)= 16
;ボタン2(キャンセル)= 32
;ジョイスティックとキーボードの論理和の値が返ってくる
;テンキー8426とX,Zキーもサポート

#module "joystick"
#deffunc joykey val,int,int
mref ret,16
mref trg,1
mref wnd,2

;初回の起動時のみジョイスティックを初期化
if init_flg = 0{
#uselib "joypad.dll"
#func joypad joypad 1
init_flg = 1
}
;第2パラが1でHSP以外のウインドウがアクティブな場合は入力されていないとみなす
ginfo 1
if (wnd = 1) & (prmx = -1) : ret = 0 : return

;*****キーボードの処理*****
;左
getkey i,37 : key = i : getkey i,100 : key = key or i
;上
getkey i,38 : key = key or (i* 2) : getkey i,104 : key = key or (i*2)
;右
getkey i,39 : key = key or (i* 4) : getkey i,102 : key = key or (i*4)
;下
getkey i,40 : key = key or (i* 8) : getkey i, 98 : key = key or (i*8)
;決定
getkey i,88 : key = key or (i*16) : getkey i, 13 : key = key or (i*16)
;キャンセル
getkey i,90 : key = key or (i*32) : getkey i, 32 : key = key or (i*32)
i = key

;trgの処理をまとめて
key = oldkey ^ key & key | (trg & key)

;*****ジョイスティックの処理*****
joypad joy,trg,0
if joy < 0 : joy = 0

;*****結果をorして返せ*****
ret = key or joy
;今回のキーボード値を保存
oldkey = i
return
#global
0021名無しさん@お腹いっぱい。01/11/09 07:22ID:wli4jLXP
>17
オモシレぇー!!!
0022名無しさん@お腹いっぱい。01/11/14 15:22ID:???
>>21 (・∀・)
0023名無しさん@お腹いっぱい。01/11/15 02:28ID:???
>>20
参考にさせてもらいましたー
0024名無しさん@お腹いっぱい。01/11/15 14:59ID:FoQ9AS6c
//変数宣言
LPDIRECTDRAWSURFACE lpPrimary; //基本サーフェス(画面表示と同じもの)
LPDIRECTDRAWSURFACE lpBackbuffer; //バックバッファサーフェス(描画対象と同じもの)
LPDIRECTDRAWSURFACE lpScreen;
DDCOLORKEY ddck;
LPDIRECTDRAWSURFACE lpChar;
LPDIRECTDRAW lpDDraw;
PALETTEENTRY pe2[256];
POINT ptBase; // スクロール基準点
void DrawFrame(void) //メインルーチン
{
//変数宣言
static int i;
static int j; //アニメーションフラグ
static int x,y; //座標の設定
static int size=32; //拡大縮小用変数
static int sc,sc2;
RECT Scrrc={0,0,640,480}; //画面のサイズ
RECT Charrc[]={{0,0,64,64}, //BMPの座標を指定する
{64,0,128,64},
{128,0,192,64}};
// 左エリア
if( ptBase.x > 0){
// 左上
if( ptBase.y > 0){
SetRect( &Scrrc, 0, 0, ptBase.x, ptBase.y);
lpBackbuffer->BltFast(ptBase.x,ptBase.y,lpScreen,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
// 左下
if( ptBase.y <= 640){
SetRect( &Scrrc, 0, ptBase.y, ptBase.x, 480);
lpBackbuffer->BltFast(ptBase.x,ptBase.y,lpScreen,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
}
// 右エリア
if( ptBase.x <= 640){
// 右上
if( ptBase.y > 0){
SetRect( &Scrrc, ptBase.x, 0, 640, ptBase.y);
lpBackbuffer->BltFast(ptBase.x,ptBase.y,lpScreen,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
// 右下
if( ptBase.y <= 480){
SetRect( &Scrrc, 0, ptBase.y, ptBase.x, 480);
lpBackbuffer->BltFast(ptBase.x,ptBase.y,lpScreen,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
}
//ウェイト処理
static DWORD Nowtime,Prevtime;
Nowtime=timeGetTime();
if((Nowtime-Prevtime)<WAIT)return;
Prevtime=Nowtime;
lpPrimary->Flip(NULL,DDFLIP_WAIT);
}
斜めスクロールが出来ないぞゴルァ!
0025名無しさん@お腹いっぱい。01/11/15 17:57ID:???
>>20
プリプロセッサ処理はスクリの流れと関係無いよ。モジュール名は関係あるけど。
由恵にinit_flgは必要なし。
0026名無しさん@お腹いっぱい。01/11/17 05:18ID:Md+7FNp4
ソースじゃなくてエディタの色分けの設定ファイルなんだけど
UPしてもいい?
0027名無しさん@お腹いっぱい。01/11/17 08:16ID:???
なんでもいいからうぷすれ
0028Freuden01/11/17 11:36ID:pANvGZcK
とりあえず、どうよ。

typedef struct{...} Object; // ここでキャラの情報を格納した構造体を新しく定義する

void puyo01Act01(Object *enemyPtr); // ステージ1の"ぷよ"と言う名の敵の動きの1つ目
void puyo01Act02(Object *enemyPtr); // ステージ1の"ぷよ"と言う名の敵の動きの2つ目
void puyo01Act03(Object *enemyPtr); // ステージ1の"ぷよ"と言う名の敵の動きの3つ目
void puyo01Act04(Object *enemyPtr); // ステージ1の"ぷよ"と言う名の敵の動きの4つ目
void puyo01Act05(Object *enemyPtr); // ステージ1の"ぷよ"と言う名の敵の動きの5つ目

// ステージ1の"ぷよ"と言う名の敵の動きに関する関数へのポインタ配列
void (*puyo01ActBox[])(Object *) = {puyo01Act01, puyo01Act02, puyo01Act03, puyo01Act04, puyo01Act05};

// 実際に関数を発動させる
puyo01ActBox[enemyPtr->actStepIns](enemyPtr); // "ぷよ"と言う名の敵自身に自分の行動の番号を保存させ制御する
0029名無しさん@お腹いっぱい。01/11/17 11:43ID:???
どうよ、と言われても……。
00302601/11/17 13:06ID:???
お言葉に甘えて…YGS2K用の設定ファイル。K2Editor用(多分秀丸も)
予約語・標準命令は紺、拡張命令は青灰、文字列は小豆色、コメントは緑。
正規表現の事を分かっていないので、ホントはもっと縮められると思います。

33,void
33,main
33,long
33,int
33,str
33,return
33,if
33,else
33,alt
33,case
33,default
33,loop
33,break
33,goto
33,for
33,while
33,do
33,jump
33,include
33,new
33,delete
33,import
49,(Load|Stop|Pause|Replay|IsPlay)Wave
49,PlayWave(|2)
49,ReleaseWave(|All)
49,Get(Pos|Frequency)Wave
49,Set(Frequency|LoopMode)Wave
49,SetVolumeWave(|All)
49,SetWaveFormat
49,(Open|Close|Stop|Pause|Replay|IsPlay|GetSongMax|Eject|SetLoopMode)CD
49,Song(Length|Start)CD
33,GetCurrentPosCD
49,PlayCD(|FromStart|FromTo|Pos)
49,Get(Bpp|PlaneSize)
49,LoadBitmap(|W)
49,(Release|Save)Bitmap
49,SetColorKey(RGB|Pos)
33,SystemMemoryPlane
49,(|Clip)Blt(|Fast|Rect|FastRect)(|R)
49,(|Clip)BlendBlt(|Rect)
00312601/11/17 13:08ID:???
>>30 からの続き
33,EnableBlendColorKey
49,ClearSecondary(|Rect)
49,SetFillColor(|RGB)
49,Set(Brightness|SystemMemoryUse|SecondaryOffset)
49,(Realize|Flush)Palette
49,(Flush|Mosaic)Blt
49,(Enable|Disable|BltFrom|SnapTo|Save)BackupPlane
33,SwapToSecondary
33,CreateSurface
49,(Set|Get|GetReal)FPS
49,(Get|Reset)Time
49,(Pause|Restart)Time(|All)
49,Text(Out|Move|Blend|Blt|GetSize)
49,Text(Size|Height|Color|Font)
49,(FPS|Mouse|Text)Layer(On|Off)
49,TextBackColor(|Disable)
49,str(cpy|ncpy|cat)
33,sprintf
33,KeyInput
49,Is(Push|Press)(|Up|Down|Left|Right)Key
49,Is(Push|Press)(Return|Space|Esc|Joy|MIDI)Key
33,SetJoyButtonMax
33,GetVelocityMIDIKey
49,(Set|Get)MouseInfo
49,(Load|Play|Stop|Pause|Replay|Release|IsPlay|SetLoopMode)MIDI
49,(Load|Save|Reset)GameFlag(|2)
49,(Load|Save)File
49,(Jump|Call)Script
33,SetErrorRestrain
33,Quit
33,Rand
49,OpenSenario(|2)
49,Read(Senario|LineToString|SenarioToString)
49,(Set|Change)DisplayMode
49,(Get|Set)CurrentDirectory
49,(Set|Get)ConstParam
33,halt
49,Set(Window|DebugMode)
49,InnerLog(|Mes)
177,(Left|Right|Mid)Str
00322601/11/17 13:09ID:???
>>31 からの続き
161,CharAt
177,Str(Len|Cmp|Cpy|Cat)
161,IsKanji
177,To(Upper|Lower)Str
161,FindChar
177,Val(Long|Float|Float2|Num)
177,(Copy|Fill)Memory
161,QSort
177,Cast(From|To)(Float|Double)
177,(Open|Close)File
177,Get(FileSize|FileMemory|ParentDir)
177,(Read|Write)(Data|Line|Byte|Word|DWord)
161,BltTrans
177,(|a)sin
177,(|a)cos
177,(|a)tan
169,atan2
169,pow
177,SetFind(File|Path)
177,Enable(Subdir|PackFile|DirListup)
177,Find(|All)File
177,Is(Match|Dir)
169,CheckDrive
169,GetFoundFile
177,SpriteBlt(|XY|Offset)
177,SpriteDraw(|Offset)
177,Sprite(Move|Copy|Visible)
177,SetSprite(|Rect|Offset|Rate|Animation(|2)|AniPat)
169,SpriteEnableColorKey
169,GetDateAndTime
177,(Get|Release)HDC
177,(Get|Set)Pixel
169,DrawLine
169,ChangeBright
169,IsPatMatch
177,(Create|Destroy)JoyStick
169,GetJoyStickCount
177,JoyStick(Init|SetMax|SelectDevice|Input|)
177,JoyStickIsKey(Push|Press)
Quotation="
Canceler=\
Commenter=//
CommenterFirstToken=0
BracketCount=1
BracketLeft=/*
BracketRight=*/
BracketColorIndex=5

以上。誰かの役に立ったら嬉しいです。
0033名前は開発中のものです。01/12/25 23:52ID:cgyXC09v
age
00342時間くらいかかってます01/12/26 17:18ID:QaCPTDIU
curses使ったテキストぷよぷよ。
ゲームはちゃんとできるが、あんまり短くしようとしてないのでプログラムは適当。
Windowsの人はhttp://www.cygwin.com/からsetup.exe落としてきて、
devel→gccにチェック入れてインストールして、
$ gcc puyo.c -lncurses
$ ./a.exe
として実行。
UNIX系の人はよしなに。
0035puyo.cと保存せよ!01/12/26 17:19ID:QaCPTDIU
#include <curses.h>
#include <sys/time.h>
#include <time.h>
#define check(p,d) ((field[(p)]+field[(p)+dird[(d)]])==0)
#define set(c) do{field[pos]=puyo[0]*c;field[pos+dird[dir]]=puyo[1]*c;}while(0)
char delf[7*14],field[7*14],puyo[2],nxt[2],dird[]={-7,-1,7,1};char *puyoc[]={
" ","[-]","[@]","[!]","[*]","[#]", "///"};int pos,dir;void view(){int i,j;
for(i=1;i<14;i++)for(j=0;j<7;j++){move(i-1, j*3);printw("%s", puyoc[field[i
*7+j]]);}}int fall(){int i,j,r=0;for(i=0;i<6;i++){for(j=12;field[i+j*7]&&j>0;j
--);for(;j>0;j--)if((field[i+j*7]=field[i+j*7-7])!=0)r=1;field[i]=0;}return r;}
int delp(int p,int d){int i,j,r=1;delf[p]=d+1;for(i=0;i<4;i++){j=p+dird[i];if(j
>=0&&delf[j]<d+1&&field[p]==field[j])r+=delp(j, d);}if(d)field[p]=0;return r;}
int delpuyo(){int i,r=0;bzero(delf, 7*14);for(i=0;i<7*13;i++)if(field[i]&&field
[i]<6&&delp(i,0)>3){delp(i,1);r=1;}return r;}void main(){int i,cnt,w,f=fileno(
stdin),c;fd_set fdset,rfdset;struct timeval tv;srand(time(NULL));bzero(field,7*
14);for(i=0;i<14;i++)field[i*7+6]=6;for(i=0;i<6;i++)field[13*7+i]=6;FD_ZERO(&
fdset);FD_SET(f,&fdset);tv.tv_sec=0;tv.tv_usec=100000;initscr();noecho();cbreak
();erase();nxt[0]=((rand()/10)%5)+1;nxt[1]=((rand()/10)%5)+1;while(1){dir=0;pos
=7+3;w=10;puyo[0]=nxt[0];puyo[1]=nxt[1];nxt[0]=((rand()/10)%5)+1;move(4,24);
printw("%s",puyoc[nxt[0]]);nxt[1]=((rand()/10)%5)+1;move(3,24);printw("%s",
puyoc[nxt[1]]);while(1){rfdset=fdset;if(select(f+1,&rfdset,NULL,NULL,&tv)>0){c=
getch();if(w<10)w+=2;if(c==' '&&check(pos,(dir+1)%4))dir=(dir+1)%4;if(c=='q'&&
check(pos+7,dir))exit(0);if(c==','&&check(pos-1,dir))pos--;if(c=='.'&&check(pos
+1,dir))pos++;}else cnt++;if(check(pos+7,dir)){if(++cnt>10){pos+=7;cnt=0;}}else
{if(--w<0){set(1);break;}}set(1);view();refresh();set(0);}while(1){while(fall()
){view();refresh();usleep(100000);}usleep(300000);if(!delpuyo())break;view();
refresh();usleep(300000);}}}

ていうか俺も暇人だな。
0036補足01/12/26 17:26ID:QaCPTDIU
>    ...char *puyoc[]={
>" ","[-]","[@]","[!]","[*]","[#]", "///"};...
 ↑ここの" "は、スペース3つだ。そのままこぴぺすると画面が崩れるぞ。
あと、操作は、','と'.'で左右、スペースで回転だ。
0037名前は開発中のものです。01/12/26 17:39ID:???
>>35
おおスゴイね。curses ってところが何とも渋い。
0038名前は開発中のものです。01/12/26 17:40ID:???
なにげに7行プログラミングスレのかほりが……。
0039名前は開発中のものです。01/12/26 17:46ID:QaCPTDIU
7行スレのオセロには感動した。
0040名前は開発中のものです。01/12/26 17:53ID:???
>>35 動いたよ〜ん。いいねいいね。
0041名前は開発中のものです。01/12/26 18:05ID:???
>>35
すげぇ(w
004234~3601/12/26 21:22ID:???
7行スレまだあったんだね。
http://pc.2ch.net/test/read.cgi/tech/984182993/
ぷよぷよはちょっと7行じゃ無理そうだなぁ。
#defineまでで5行あるし。
0043暇なのでもう一つ作った01/12/29 00:29ID:???
#include <curses.h>
#include <sys/time.h>
#include <time.h>
char *e="zzzqASAVANoAVASANoAarANuANoANuANrAaoANrANuANoANuANrANoASAPARAPARAPASA"
"NoANrANoANznANoANrANoASANoARANoARANoASANvANuBoBuANuGnANoMEoANoFuANoBsBsBoANuI"
"NDnLnENHuANoBznBoANuGnANoMEoANnGuANoBznBoANvASAPARANoAVASANoANrANuANoANuANrAN"
"oAaNANoAPARANCRAPANoAOAarANoANoANznANoBoANrAOAPANoARANoARANoASANoANzoANoANzoA"
"NoAZPAPAZPANzzzq",f[42*22+1],fk[42*22],*p[]={"(V","(D","(<","(=","h)","l)",
">)","=)"},*m[]={"%%","%%","@@","><"},t[]={' ','.','*','#'},d[]={-42,1,42,-1},
em[4],ed[4];int kn=0,k[99],kk[9999],kl[9999],kr[9999],ps=16*42+20,dr=1,ct=0,dt=
0,dd[]={'k','l','j','h'},v=0,ts=0,ep[]={10*42+20,10*42+20,10*42+20,10*42+20};
int nn(int c){return c==' '||c=='.'||c=='*';}int nw(int z){return nn(f[z])&&nn(
f[z+1]);}int ck(int p){int a=f[p],b=f[p+1];if(a=='#'||b=='#')return 3;if(a=='*'
||b=='*')return 2;if(a=='.'||b=='.')return 1;return 0;}int kc(int a, int b){int
d=(a/42==b/42)?((a%42)>(b%42))*2-1:(a>b)*84-42;for(;b!=a;b+=d)if(!nw(b))return
0;return 1;}void emv(int e){int i,j,z;if((i=fk[ep[e]])!=0){i--;switch(em[e]){
case 1:j=ep[e];if(e==3||(e==2&&abs((j%42)-(ps%42))+abs(j/42-ps/42)>30))goto ky;
if(j/42==ps/42&&kc(j,ps))ed[e]=((j%42)>(ps%42))?3:1;else if(j%42==ps%42&&kc(j,
ps))ed[e]=((j/42)>(ps/42))?0:2;else{j=d[(e&1)?(dr+2)%4:dr];for(z=ps;!fk[z];z+=j
);j=fk[z]-1;if (j>=0)ed[e]=kk[i*kn+j];}break;case 0:ky:j=ed[e];do{ed[e]=(rand()
/10)%4;}while(ed[e]==j||ck(ep[e]+d[ed[e]])>2);j=ep[e];if(j%42==ps%42||j/42==ps/
42)em[e]=1;break;case 2:j=d[(dr+2)%4];for(z=ps;!fk[z];z+=j);j=fk[z]-1;if (j>=0)
j=kk[i*kn+j];for(i=0;i<3;i++)if(ck(ep[e]+d[(i+j+1)%4])<3)break;ed[e]=(i+j+1)%4;
break;case 3:ed[e]=kk[i*kn+fk[10*42+20]-1];if(ep[e]==10*42+20)em[e]=0;break;}if
(em[e]<2&&((rand()/10)%20)==0)em[e]^=1;}i=ct;if(em[e]==2){if(i&1)return;else i
/=2;}if(em[e]==3)i=1;if(ed[e]&1||i&1){if(ck(ep[e]+d[ed[e]])<3)ep[e]+=d[ed[e]];
else ed[e]=(ed[e]+2)%4;}}void ev(int e){move(ep[e]/42,ep[e]%42);printw("%s",m[
em[e]]);}void kb(){int i=0;for(;i<22*44;i++)if (nw(i)&&nw(i-2)+nw(i+2)&&nw(i+42
)+nw(i-42)){k[kn++]=i;fk[i]=kn;}}int kd(){int i=0,j;for(;i<kn;i++)for(j=0;j<kn;
j++){if(k[i]/42==k[j]/42&&kc(k[i],k[j])){kl[i*kn+j]=abs((k[i]%42)-(k[j]%42));kk
[i*kn+j]=((k[i]%42)>(k[j]%42))?3:1;}if(k[i]%42==k[j]%42&&kc(k[i],k[j])){kl[i*kn
+j]=abs((k[i]-k[j])/42)*2;kk[i*kn+j]=((k[i]/42)>(k[j]/42))?0:2;}}}void wf(){int
i,x,y;for(i=0;i<kn*kn;i++)kr[i]=i/kn;for(y=0;y<kn;y++)for(x=0;x<kn;x++)if(kl[x*
kn+y])for(i=0;i<kn;i++)if(kl[y*kn+i])if(!kl[x*kn+i]||(kl[x*kn+y]+kl[y*kn+i])<kl
[x*kn+i]){kl[x*kn+i]=kl[x*kn+y]+kl[y*kn+i];kr[x*kn+i]=kr[y*kn+i];}for(y=0;y<kn;
y++)for(x=0;x<kn;x++){int n=kr[y*kn+x],m=x;for(;n!=y;n=kr[y*kn+n])m=n;kk[y*kn+x
]=kk[y*kn+m];}}void de(){int j=0;while(*e){int i,a=(*e<'a')?*e-'A':*e-'a'+26;i=
a%13;a/=13;for(i++;i;i--){f[j++]=t[a];if(a==1)ts++;}e++;}}void vw(){move(0,0);
printw("%s",f);}void st(int z){f[ps]=z?p[dr*2+(ct&1)][0]:' ';f[ps+1]=z?p[dr*2+(
ct&1)][1]:' ';}
0044つづき01/12/29 00:29ID:???
void main(){int i,w,f=fileno(stdin),c,k=0;fd_set fdset,rfdset;
struct timeval tv;srand(time(NULL));FD_ZERO(&fdset);FD_SET(f,&fdset);tv.tv_sec=
0;tv.tv_usec=200000;initscr();stdscr=newwin(22,42,0,0);noecho();cbreak();de();
kb();kd();wf();while(1){ct++;rfdset=fdset;if(select(f+1,&rfdset,NULL,NULL,&tv)>
0){k=getch();if(k=='q')exit(0);}for(i=0;i<4;i++)if(k==dd[i]&&ck(ps+d[i])<3)dr=i
;c=ck(ps+d[dr]);if(dt>=ts){move(10,16);printw("GAME CLEAR");refresh();exit(0);}
if(c<3&&(dr&1||ct&1)){ps+=d[dr];if(c==1)dt++;if(c==2){for(i=0;i<4;i++)if(em[i]
!=3){ed[i]=(ed[i]+2)%4;em[i]=2;}v=60;}}if(v&&--v==1){for(i=0;i<4;i++)if(em[i]<3
)em[i]=0;v=0;}if(ps==10*42+40)ps=10*42;else if(ps==10*42)ps=10*42+40;for(i=0;i<
4;i++)if(abs(ps-ep[i])<2){if(em[i]==2)em[i]=3;if(em[i]<2){move(10,16);printw(
"GAME OVER");refresh();exit(0);}}emv(0);emv(1);emv(2);emv(3);st(1);vw();ev(0);
ev(1);ev(2);ev(3);move(0,0);refresh();st(0);}}
0045いろいろ足りないけどもう限界01/12/29 00:30ID:???
今度はパックマン。
コンパイルの方法は>>34と同じ。Windowsでは試してないけどぷよぷよ同様いけると思う。
操作方法はviキーバインド('h'〜'l'で操作)。

一応各モンスターには性格付けしてる。
ドット全部食べてもクリアにならないことがあるけど許すように。

ふぅ。
0046名前は開発中のものです。01/12/29 00:56ID:???
もう無理矢理ですな。
0047名前は開発中のものです。01/12/30 13:33ID:???
#include <iostream.h>
#define hajime {
#define owari }
#define mona int

mona main()
hajime
mona giko;
cin >> giko;
return 0;
owari
0048名前は開発中のものです。02/01/14 00:22ID:wg4iGUmB
age
0049名前は開発中のものです。02/01/15 16:29ID:FPR5mgZK
age
0050名前は開発中のものです。02/01/15 16:38ID:???
<script>
alert("GAME OVER");
close();
</script>
0051名前は開発中のものです。02/01/15 17:08ID:trPF2jYB
WORD wver=MAKEWORD(2,2);
WSADATA wsa;
if(WSAStartup(wver,&wsa)!=0)error("winsock iniz fails");
if(atexit((void(*)(void))(WSACleanup))){
error("atecit(WSACleanup)fails");
exit(-1);

}
sockaddr_in saddr;
SOCKET sok=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
memset((char*)&saddr,0,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_port=htons(2580);
bind(sok,(sockaddr*)&saddr,sizeof(saddr));
if(listen(sok,1)){
error("other server using this proctol");
exit(-1);

}
::AfxBeginThread(waiting,(void*)sok);
0052名前は開発中のものです。02/01/18 15:44ID:CNhUTHCR
補間関数。高速化しすぎて役立たず。

double getNeville(double t, double v0, double v1, double v2)
{
v0 = v1 + (v1 - v0) * (t - 1);
v1 = v2 + (v2 - v1) * (t - 2);
return v1 + (v1 - v0) * (t - 2) * 0.5;
}
0053名前は開発中のものです。02/01/18 18:14ID:B+awXMzd
意外に誰も作らないんでサクッと。

convert.pl--
# ソースコードを2chへの書き込み用に変換するPerlスクリプト
# perl convert.pl hoge.cとかやるとhoge.c.txtができる。

$tab = '&nbsp;' x 4;        # タブ幅4
open(IN, $ARGV[0]) or die;
open(OUT, "> $ARGV[0].txt") or die;
while (<IN>) {
    s/&/&amp;/g;
    s/</&lt;/g;
    s/>/&gt;/g;
    s/"/&quot;/g;
    s/ /&nbsp;/g;
    s/\t/$tab/g;
    print OUT;
}
close(OUT);
close(IN);
00545302/01/18 18:17ID:???
上手く行ったみたいやな。もういっちょテスト。

static uint8 *angle_t;
#define PRS 256

/* atanテーブルを作るらしい */
int angle_init(void) {
    angle_t = malloc(sizeof(uint8) * (PRS * 2 + 1));
    if (angle_t == NULL) return -1;
    angle_t += PRS;
    
    for (int i = -PRS; i <= PRS; i++) {
        double a = atan2(i, PRS);
        if (a > 0) a += PI2 / 256 / 2;
        else a -= PI2 / 256 / 2;
        angle_t[i] = a * 256 / P12;
    }
    return 0;
}

/* 0〜255で角度を返すらしい */
uint8 angle(int16 x, int16 y) {
    if (x == 0 && y == 0)
        return 0;
    if (y < x) {
        if (y > -x) {
            return angle_t[(int32) y * 256 / x];
        }
        return angle_t[(int32) -x * 256 / y] + 192;
    } else {
        if (y > -x) {
            return angle_t[(int32) -x * 256 / y] + 64;
        }
        return angle_t[(int32) y * 256 / x] + 128;
    }
}
00555302/01/18 18:19ID:???
というわけで、インデントつきで書き込めてコピペすればそのまま動く。
0056名前は開発中のものです。02/01/18 18:22ID:2cgx27pc
>>53
惜しい!。
s/&/&/g;
この部分は間違っていると思われ。
00575302/01/18 18:24ID:???
そうなん? もう寝るのでデバッグ頼む(おい
0058名前は開発中のものです。02/01/18 19:40ID:???
>>54
HSPプラグ員に死ぬほどあるよな。それ。
0059名前は開発中のものです。02/01/18 21:42ID:???
かちゅしゃの引用で見るとすごいことに(w
ま、クライアント側の問題なんだけど
0060名前は開発中のものです。02/01/18 21:53ID:???
行数制限を考慮して分割カキコする機能とか、
ログからプログラムを切り出す機能とかほしいね。
0061名前は開発中のものです。02/01/19 08:25ID:3R2CY6rZ
atoi()ってなんですか?
0062名前は開発中のものです。02/01/19 12:01ID:???
整数を文字列に変換する
0063名前は開発中のものです。02/01/19 15:55ID:???
>>62
逆だろ
0064名前は開発中のものです。02/01/22 01:12ID:???
atoi=alphabet to int
って覚えたけど、正確には違うんだろーな
0065名前は開発中のものです。02/01/22 04:37ID:???
atoi = ascii to int じゃねーの?
0066名前は開発中のものです。1/302/01/26 23:59ID:/Un10yYP
Private Sub Form_Load()
'Microsoft Visual Basic 6.0(SP5)
'FormのVisibleプロパティはFalse
'タイトルMsgBox格納変数
Dim slime As Integer
'最大HP格納変数
Dim slimebess As Integer
'ダメージ値格納変数
Dim dameji As Integer
'残りHP格納変数
Dim nokori As Integer
'敵の最大HP格納変数
Dim Drakey As Integer
'敵に与えたダメージ値格納変数
Dim E_dameji As Integer
'敵の残りHP格納変数
Dim E_nokori As Integer
'HPの初期値設定
nokori = 10
'敵のHPの初期値設定
E_nokori = 10

slime = MsgBox("ちょこっと戦う", , "スタート画面")

slime = MsgBox("ハァハァ(´Д`;)" & vbCrLf & "" & vbCrLf & _
"が、あらわれた!!" & vbCrLf & "あなたのHP・・・" & _
nokori & vbCrLf & "" & vbCrLf & "敵のHP・・・" & E_nokori, _
vbExclamation)
0067名前は開発中のものです。2/302/01/27 00:00ID:5zOjGYzx
'自分が生きているときの処理
You_living:

MsgBox "あなたの攻撃!!「クソスレたてんなやヴォケ」"
'乱数の初期化
Randomize
'敵に与えたダメージ
E_dameji = Int(Rnd * 3) + 1
'敵の状態
E_nokori = E_nokori - E_dameji

slime = MsgBox("ハァハァ(´Д`;)" & vbCrLf & "" & vbCrLf & _
"に" & E_dameji & "のダメージを与えた!" & vbCrLf & "" & _
vbCrLf & "ハァハァ(´Д`;)の 残HP " & E_nokori, , "戦闘中")
'敵の生死の判定
If E_nokori > 0 Then

GoTo E_living

Else

GoTo E_died

End If
'敵が生きていたときの処理
E_living:

MsgBox "ハァハァ(´Д`;)の攻撃!!" & vbCrLf & "" & vbCrLf & _
"「マルチたん・・・ハァハァ」"
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = Int(Rnd * 3) + 1
'自分の状態
nokori = nokori - dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")
'自分の生死の判定
If nokori > 0 Then

GoTo You_living

Else

GoTo You_died
End

End If
0068名前は開発中のものです。3/302/01/27 00:00ID:5zOjGYzx
'敵を倒したときの処理
E_died:

MsgBox "ハァハァ(´Д`;)を倒した!この世に平和が訪れた。" & _
vbCrLf & "" & vbCrLf & "HAPPY END"

End
'自分が倒されたときの処理
You_died:

MsgBox "あなたのスレは終了しました。(゚д゚)マズー"

End
End Sub
0069名前は開発中のものです。02/01/27 01:19ID:???
10 end
0070名前は開発中のものです。1/202/01/27 23:59ID:S3QJWc68
'ギコ追加
'レス68 3/3 の続き
'Ver2
'Microsoft VisualBasic6.0(SP5)
'敵を倒したときの処理
E_died:

MsgBox "ハァハァ(´Д`;)を倒した!"
nokori = 20
MsgBox "あなたのLVが上がった!" & vbCrLf & "" & vbCrLf & "HPがすべて回復した!" & _
vbCrLf & "HPの最大値が" & nokori & "になった!" & vbCrLf & "" & vbCrLf & "攻撃力が1あがった!!"

MsgBox "ROUND2 FIGHT!!"

'敵のHPの初期値設定
E_nokori = 20

slime = MsgBox("∧∧" & vbCrLf & "(゚Д゚)" & vbCrLf & "" & vbCrLf & _
"ギコが、あらわれた!!" & vbCrLf & "あなたのHP・・・" & _
nokori & vbCrLf & "" & vbCrLf & "敵のHP・・・" & E_nokori, _
vbExclamation)

You_livingAct2:

MsgBox "あなたの攻撃!!「ただスレ立ててみたかっただけだろう?」"
'乱数の初期化
Randomize
'敵に与えたダメージ
E_dameji = Int(Rnd * 4) + 1
'敵の状態
E_nokori = E_nokori - E_dameji

slime = MsgBox("∧∧" & vbCrLf & "(゚Д゚)" & vbCrLf & "" & vbCrLf & _
"に" & E_dameji & "のダメージを与えた!" & vbCrLf & "" & _
vbCrLf & "∧∧" & vbCrLf & "(゚Д゚)の 残HP " & E_nokori, , "戦闘中")

'敵の体力の判定
If E_nokori > 9 Then

GoTo ENEMY_living

Else
If E_nokori <= 9 And E_nokori > 0 Then

GoTo ENEMY_HONKI

Else

MsgBox "ギコたおした!"

End
End If
End If
' If E_nokori <= 0 Then
'
' End
'
' End If
' GoTo ENEMY_died
0071名前は開発中のものです。2/202/01/27 23:59ID:S3QJWc68
'敵が生きていたときの処理
ENEMY_living:

MsgBox "∧∧" & vbCrLf & "(゚Д゚)の攻撃!!" & vbCrLf & "" & vbCrLf & _
"「イッテヨシ!!」"
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = Int(Rnd * 1) + 1
'自分の状態
nokori = nokori - dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")

'自分の生死の判定
If nokori > 0 Then

GoTo You_livingAct2

Else

GoTo You_died
End

End If

ENEMY_HONKI:

MsgBox "  ∧∧" & vbCrLf & "∩(゚Д゚)ノの攻撃!!" & vbCrLf & "" & vbCrLf & _
"「ホンキデイクゾ ゴルア!!!!!」"
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = Int(Rnd * 5) + 3
'自分の状態
nokori = nokori - dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")

'自分の生死の判定
If nokori > 0 Then

GoTo You_livingAct2

Else

GoTo You_died
End

End If

End
0072名前は開発中のものです。02/01/28 02:30ID:mPt8rtel
>>66-71
いくらBASICだからって、VBでGOTO使わなくても…
0073名前は開発中のものです。02/01/28 02:39ID:Gl770+eW
たああああああああああああああああああああああのしいと思っているのですか?
アフォですかあなたは。
早く家に帰りなさい。

0074名前は開発中のものです。02/01/28 02:54ID:???
こういう長いのをうpする時には、途中はsage進行で
最後にageた方がいいぞ。
あがりっぱなしだとウザがられる事もあるからな。
0075名前は開発中のものです。1/202/01/29 00:02ID:???
'Microsoft Visual Basic 6.0(SP5)
'おにぎり追加
'Ver3
''レス71 2/2 の続き
'仲間を呼ぶ確率(1から6までの数値を取る)
Dim magisyan As Integer

'ギコを倒したときの処理
ENEMY_died:

MsgBox "ギコをやっつけた!"

nokori = 35

MsgBox "あなたのLVが上がった!" & vbCrLf & "" & vbCrLf & _
"HPがすべて回復した!" & vbCrLf & "HPの最大値が" & nokori & "になった!" _
& vbCrLf & "" & vbCrLf & "攻撃力が2あがった!!"
MsgBox "ROUND3 FIGHT!!"
'敵のHPの初期値設定
E_nokori = 30
slime = MsgBox("/■\" & vbCrLf & "(´∀` ∩" & vbCrLf & "" & vbCrLf & _
"おにぎりが、あらわれた!!" & vbCrLf & "あなたのHP・・・" & _
nokori & vbCrLf & "" & vbCrLf & "敵のHP・・・" & E_nokori, _
vbExclamation)
'自分の攻撃
You_livingAct3:
MsgBox "あなたの攻撃!!「誰か真剣に削除依頼だしてくれよ。」" & vbCrLf & "" _
& vbCrLf & "■■■■■■■■■■■ 終了 ■■■■■■■■■■■"
'乱数の初期化
Randomize
'敵に与えたダメージ
E_dameji = Int(Rnd * 3) + 4
'敵の状態
E_nokori = E_nokori - E_dameji

slime = MsgBox("/■\" & vbCrLf & "(´∀` ∩" & vbCrLf & "" & vbCrLf & _
"に" & E_dameji & "のダメージを与えた!" & vbCrLf & "" & _
vbCrLf & "/■\" & vbCrLf & "(´∀` ∩の 残HP " & E_nokori, , "戦闘中")
'敵の体力の判定
If E_nokori > 15 Then
GoTo Onigiri_living
Else
'おにぎりの残りHPが15以下のとき
If E_nokori <= 15 And E_nokori > 0 Then
GoTo Onigiri_Help
Else
GoTo Onigiri_died
End If
End If
'おにぎりのHPが16以上のとき
0076名前は開発中のものです。2/202/01/29 00:05ID:iGXUdj+v
Onigiri_living:

MsgBox "/■\" & vbCrLf & "(´∀` ∩の攻撃!!" & vbCrLf & "" & vbCrLf & _
"「おにぎりワッショイ!!」"
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = Int(Rnd * 3) + 3
'自分の状態
nokori = nokori - dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")
'自分の生死の判定
If nokori > 0 Then
GoTo You_livingAct3
Else
GoTo You_died
End If
'おにぎりのHPが15以下のとき
Onigiri_Help:
MsgBox "/■\" & vbCrLf & "(´Д` ∩は仲間を呼んだ!!" & vbCrLf & "" & vbCrLf & _
"「タスケテー!!!!!」"
'乱数の初期化
Randomize
'1から6までの数値を取る
magisyan = Int(Rnd * 6) + 1
'50%の確率で仲間がくる
'数値が3より大きいとき
If magisyan > 3 Then
'焼きおにぎりの攻撃処理
MsgBox " __" & vbCrLf & "/:∵:\" & vbCrLf & "(∵´∀`∩焼きおにぎりがやってきた!!" _
& vbCrLf & "" & vbCrLf & _
"「オニギリワショーイ!!!!!」"
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = 13
'自分の状態
nokori = nokori - dameji
slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")
'自分の生死の判定
If nokori > 0 Then
'自分のHPが1以上のとき
GoTo You_livingAct3
Else
GoTo You_died
End If
Else
'取り出した数値が3以下のとき。
MsgBox "しかし!助けは、こなかった・・・"
'ダメージを受けずに、自分のターンに行く
GoTo You_livingAct3
End If
Onigiri_died:
MsgBox "おにぎりをやっつけた!"
End
0077名前は開発中のものです。1/302/01/30 00:14ID:???
'Microsoft Visual Basic 6.0(SP5)
'モラ殿の追加
'Ver4
'自分が倒されたときのMsgBox処理変更
'連続攻撃のループ回数を格納する変数
Dim Renzoku As Integer


MsgBox "おにぎりをやっつけた!"

nokori = 50

MsgBox "あなたのLVが上がった!" & vbCrLf & "" & vbCrLf & "HPがすべて回復した!" _
& vbCrLf & "HPの最大値が" & nokori & "になった!" & vbCrLf & "" & vbCrLf & _
"攻撃力が2あがった!!"

MsgBox "FINALBATTLE FIGHT!!"
' 敵のHPの初期値設定
E_nokori = 45

slime = MsgBox("  ● " & vbCrLf & "∧((∧" & vbCrLf & "( ・∀・)" _
& vbCrLf & _
"モラ殿が、あらわれた!!" & vbCrLf & "あなたのHP・・・" & _
nokori & vbCrLf & "" & vbCrLf & "敵のHP・・・" & E_nokori, _
vbExclamation)

You_livingAct4:

MsgBox "あなたの攻撃!!「どんな良スレもいずれ終りが来る」"
'
'乱数の初期化
Randomize
'敵に与えたダメージ
E_dameji = Int(Rnd * 3) + 6
'敵の状態
E_nokori = E_nokori - E_dameji

slime = MsgBox("  ● " & vbCrLf & "∧((∧" & vbCrLf & "( ・∀・)" _
& vbCrLf & "" & vbCrLf & _
"モラ殿に" & E_dameji & "のダメージを与えた!" & vbCrLf & "" & _
vbCrLf & "  ● " & vbCrLf & "∧((∧" & vbCrLf & "( ・∀・)モラ殿の 残HP " _
& E_nokori, , "戦闘中")
0078名前は開発中のものです。1/302/01/30 00:17ID:???
'敵の生死の判定
If E_nokori > 0 Then

GoTo Tono_living

Else

GoTo Tono_died

End If

Tono_living:

'乱数の初期化
Randomize
'1から10までの数を取り出す
ghost = Int(Rnd * 10) + 1
'10を引いたとき(確率は10%)
If ghost > 9 Then

MsgBox "  ● " & vbCrLf & "∧((∧" & vbCrLf & _
"( ・∀・)モラ殿は用心棒を呼びつけた!!" & vbCrLf & "" & vbCrLf & _
"「一刀斎!そちの出番じゃ!」"
'ニギリ一刀斎の出現
MsgBox "\" & vbCrLf & "  \" & vbCrLf & "   X" & vbCrLf & "    ヾヽ" _
& vbCrLf & "     ヾ ヽ /■ヽ" & vbCrLf & "      \ (´∀` .)、" _
& vbCrLf & "       \ y ゞ ヽ" & vbCrLf & "         =∞=ゝゝ" _
& vbCrLf & "          丿ヽ  \" & vbCrLf & "          ヽ____ソ______ゝ" _
& vbCrLf & "          (Y_)   (Y_)" & "ニギリ一刀斎の攻撃!!" & vbCrLf & "" & vbCrLf & _
"「そこのお前、もう少し気配を消す修練を積んだほうがいい。」"

'自分が受けたダメージ
dameji = 9999
'自分の状態
nokori = nokori - dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")
0079名前は開発中のものです。3/302/01/30 00:18ID:yEwA5EvG
Else
'1-9を取り出すと、モラ殿の攻撃
MsgBox "  ● " & vbCrLf & "∧((∧" & vbCrLf & _
"( ・∀・)モラ殿の連続攻撃だ!!" & vbCrLf & "" & vbCrLf & _
"「うん、せいぜい頑張ってね。」"
'連続攻撃のループ処理
For Renzoku = 1 To 2
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = Int(Rnd * 3) + 3
'自分の状態
nokori = nokori - dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")

Next Renzoku

End If
'自分の生死の判定
If nokori > 0 Then

GoTo You_livingAct4

Else

GoTo You_died

End If


Tono_died:
'エンディング
MsgBox "HAPPY END"

End
'自分が倒されたときの処理
You_died:

slime = MsgBox("あなたのスレは終了しました。(゚д゚)マズー", vbCritical, "GAMEOVER")

End
End Sub
0080名前は開発中のものです。02/01/30 00:23ID:yEwA5EvG
>>77
'追加
'モラ殿の攻撃を決める乱数値格納変数
Dim ghost As Integer
0081社長02/01/30 00:24ID:???
次はマップ移動処理ですな。
0082名前は開発中のものです。02/01/30 01:29ID:???
終わったら、これのバイナリもアップしてくれな。
0083名前は開発中のものです。02/01/30 06:57ID:???
ついでにクロスプラットフォームで
0084名前は開発中のものです。02/01/30 09:40ID:???
あぷろだは?
0085名前は開発中のものです。1/202/01/31 01:00ID:???
'Microsoft Visual Basic 6.0(SP5)
'戦闘にすばやさの要素を加える
'Ver5
'テストバトルモード

Private Sub Form_Load()
'自分のすばやさの数値を格納する変数
Dim Oosasori As Integer
'敵のすばやさの数値を格納する変数
Dim Gaikotsu As Integer
'攻撃を仕掛けるのはどちらか、判定値を格納する変数
Dim Madoushi As Integer

'すばやさの判定処理
'自分が敵よりすばやさが上の場合と
'敵が自分よりすばやさが上の場合
'自分はすばやさを 10 とする
'敵のすばやさは 5 とする

Oosasori = 65

Gaikotsu = 90

'すばやさを比較する

If Oosasori > Gaikotsu Then
'自分のすばやさが上だったときの処理へ
GoTo W_Subayasa

Else
'自分と敵のすばやさが同じだったときの処理
If Oosasori = Gaikotsu Then
'乱数の初期化
Randomize
Madoushi = Int(Rnd * 100) + 1
'50%の確率で自分が攻撃できる
If Madoushi > 50 Then

MsgBox "あなたの攻撃!"
'敵の攻撃処理へ
Else

MsgBox "敵の攻撃!"
'自分の攻撃処理へ
End If

End If

'ここのEndはテスト用
End

'敵のすばやさが上だったときの処理へ
GoTo L_Subayasa

End If
0086名前は開発中のものです。2/202/01/31 01:02ID:bylwudl/
W_Subayasa:
'乱数値が6-100を取り出したとき、あなたの攻撃が優先される
'確率は95%
'乱数の初期化
Randomize
Madoushi = Int(Rnd * 100) + 1

If Madoushi > 5 Then

MsgBox "あなたの攻撃!"

Else
'すばやさが上でも、残り5%の確率で敵が攻撃してくる
MsgBox "敵の攻撃!"

End If
'敵の攻撃の処理をなんか書く
End
L_Subayasa:

'乱数値が6-100を取り出したとき、敵の攻撃が優先される
'確率は95%
'乱数の初期化
Randomize
Madoushi = Int(Rnd * 100) + 1

If Madoushi > 5 Then

MsgBox "敵の攻撃!"

Else
'すばやさが上でも、残り5%の確率であなたが攻撃できる
MsgBox "あなたの攻撃!"

End If
'自分の攻撃の処理をなんか書く
End

End Sub
0087名前は開発中のものです。02/01/31 01:06ID:???
'訂正
'敵の素早さが自分より上の時は、
Oosasori = 5

Gaikotsu = 10
'自分の素早さが上の時は
Oosasori = 10

Gaikotsu = 5
'この数値は2ケタに設定したいとき
Oosasori = 65

Gaikotsu = 90
0088名前は開発中のものです。1/302/02/01 00:28ID:???
Private Sub Form_Load()
'Microsoft Visual Basic 6.0(SP5)
'Ver7
'武器、防具を手に入れることにより、戦闘の
'勝敗の確率をある程度ユーザーが操作できるようにする。
'この要素をとりいれることで、戦闘の有利、不利を
'意図的に楽しめることが可能となる。
'Ver6/テストバトルモード
'今回は、敵の防御力が自分の攻撃力を上回ることはないものとする。

'MsgBox格納変数
Dim Meda As Integer
'武器を手に入れたときの攻撃値を格納する変数
Dim Rikanto As Integer
'防具を手に入れたときの防御値を格納する変数
Dim Shiryou As Integer
'武器の初期値
Rikanto = 0
'防具の初期値
Shiryou = 0
'ダメージ値格納変数
Dim dameji As Integer
'残りHP格納変数
Dim nokori As Integer
'敵に与えたダメージ値格納変数
Dim E_dameji As Integer
'敵の残りHP格納変数
Dim E_nokori As Integer
'敵に与えたダメージに武器の攻撃値を加えた値を格納する変数
Dim M_dameji As Integer
'敵から受けたダメージから、防御力を引いた値を格納する変数
Dim G_dameji As Integer
'HPの初期値設定
nokori = 20
'敵のHPの初期値設定
E_nokori = 20
MsgBox "Let's スタート!"
MsgBox "あなたは、モナーの街にたどり着きました。"
Meda = MsgBox("武器を買うときは「はい」を、防具を買うときは「いいえ」を押してください。", vbYesNo, "モナーの街")
If Meda = vbYes Then
MsgBox "モナーの剣を買った!攻撃力が 3 上がった!"
Rikanto = Rikanto + 3
Else
MsgBox "モナーの鎧を買った!防御力が 3 上がった!"
Shiryou = Shiryou + 3
End If
Meda = MsgBox("ハァハァ(´Д`;)" & vbCrLf & "" & vbCrLf & _
"が、あらわれた!!" & vbCrLf & "あなたのHP・・・" & _
nokori & vbCrLf & "" & vbCrLf & "敵のHP・・・" & E_nokori, _
vbExclamation)
'自分が生きているときの処理
0089名前は開発中のものです。2/302/02/01 00:30ID:???
You_living:

MsgBox "あなたの攻撃!!「クソスレばっかり上がってるだろ?」"

'乱数の初期化
Randomize
'敵に与えた素のダメージ
E_dameji = Int(Rnd * 6) + 1
'さらに武器を加えた総合ダメージ
M_dameji = E_dameji + Rikanto
'敵の状態
E_nokori = E_nokori - M_dameji

slime = MsgBox("ハァハァ(´Д`;)" & vbCrLf & "" & vbCrLf & _
"に" & M_dameji & "のダメージを与えた!" & vbCrLf & "" & _
vbCrLf & "ハァハァ(´Д`;)の 残HP " & E_nokori, , "戦闘中")
'敵の生死の判定
If E_nokori > 0 Then

GoTo E_living

Else

GoTo E_died

End If
'敵が生きていたときの処理
E_living:

MsgBox "ハァハァ(´Д`;)の攻撃!!" & vbCrLf & "" & vbCrLf & _
"「あかりたん・・・ハァハァ」"
'乱数の初期化
Randomize
'自分が受けたダメージ
dameji = Int(Rnd * 4) + 1
'自分が受けたダメージから、防御力の値を引く
G_dameji = dameji - Shiryou
'総合ダメージが 0 より下のとき(マイナスのとき)
If G_dameji <= 0 Then
'受けるダメージは 0 になる(ダメージを受けない)
G_dameji = 0

Else
'防御力の値を引いた残りの値(実際に受けるダメージ)
G_dameji = G_dameji

End If

0090名前は開発中のものです。3/302/02/01 00:31ID:???
'自分の状態
nokori = nokori - G_dameji

slime = MsgBox("あなた" & vbCrLf & "" & vbCrLf & "は" & _
G_dameji & "のダメージを受けた!" & vbCrLf & "" & vbCrLf & _
"あなたの 残HP " & nokori, , "戦闘中")
'自分の生死の判定
If nokori > 0 Then

GoTo You_living

Else

GoTo You_died
End

End If



'敵を倒したときの処理
E_died:

MsgBox "ハァハァ(´Д`;)を倒した!この世に平和が訪れた。" & _
vbCrLf & "" & vbCrLf & "HAPPY END"

End
'自分が倒されたときの処理
You_died:

MsgBox "あなたのスレは終了しました。(゚д゚)マズー"

End

End Sub
0091名前は開発中のものです。1/302/02/01 00:32ID:???
Private Sub Form_KeyPress(keyascii As Integer)

'Microsoft VisualBasic6.0(SP5)
'Ver8
'移動処理テスト
'Formに、ラベルを1つはる
'Formの大きさは、4785*1800
'そのラベルがテンキーの方向に移動する
'ラベルのオブジェクトは Label1 とする
'ラベルの大きさは、 495*375
'敵がランダムで出現する処理をテストで入れた
'右に動くと、ランダムで敵の出現
'移動に関して、テンキーの押しっぱなしも可能

'敵の出現条件格納変数
Dim A_Sasori As Integer
'座標の数を格納する変数
Dim hosuu As Integer
hosuu = 0


'Form_KeyPresssの、第一引数に代入する
Select Case keyascii
'第一引数に入れる値が、vbKey2 のとき
Case vbKey2

hosuu = Label1.Top

If hosuu >= 960 Then
'値が足されないから進まない
'つまり、キャラの動きを止める
Label1.Top = Label1.Top + 0


Else
Label1.Top = Label1.Top + 100
'100 加えて、Y座標を移動する

End If
'第一引数に入れる値が、vbKey6 のとき
Case vbKey6

'6 が押されたとき
'X座標の値を変数に入れる
hosuu = Label1.Left
'X座標が 4080 以上だったときの処理
If hosuu >= 4080 Then
'値が足されないから進まない
'つまり、キャラの動きを止める
Label1.Left = Label1.Left + 0
0092名前は開発中のものです。2/302/02/01 00:33ID:???
Else
'100 加えて、X座標を移動する
Label1.Left = Label1.Left + 100
'キャラ移動中に乱数の初期化
Randomize
'1-100の乱数値を取り出す
A_Sasori = Int(Rnd * 100) + 1
'10%の確率で敵を出現させる
If A_Sasori > 90 Then

MsgBox "荒らしがあらわれた!"

Else

End If
End If
'第一引数に入れる値が、vbKey4 のとき
Case vbKey4

hosuu = Label1.Left
'0 より低い座標のとき
If hosuu <= 0 Then
'引く値はないので、戻らない
Label1.Left = Label1.Left - 0

Else
'X座標から常に100 引く
Label1.Left = Label1.Left - 100

End If
'第一引数に入れる値が、vbKey8 のとき
Case vbKey8

hosuu = Label1.Top
'0 より低い座標のとき
If hosuu <= 0 Then
'引く値はないので、戻らない
Label1.Top = Label1.Top - 0

Else
'100 引いて、Y座標を移動する
Label1.Top = Label1.Top - 100

End If
End Select

End Sub
0093名前は開発中のものです。3/302/02/01 00:34ID:am0ZkQGt
Private Sub Form_Load()

'キャラクターをはじめに表示する座標
Label1.Left = 0
Label1.Top = 0


End Sub
0094名前は開発中のものです。02/02/01 01:45ID:Zv95eDhl
ぷよぷよやぱっくまん、確かに良くできているが、残念な点がいくつか。
・冗長な処理がいくつかある
・コンパイラ警告が頻発@gcc
・ANSI-Cに従っていない

7行スレの名物コテハンのトリッキーの1は、
そういうスキの一切ないプログラムを書くから恐ろしい。
最終的に6行にしたオセロや、7行マインスイーパを参考に、
是非是非書き直して、あの感動をもう一度味わせてください(笑)

トリッキーの1、このスレに来ないかなぁ。
0095馬糞ウニげろげろ02/02/01 01:58ID:???
!!VP1.0
# c[ 0- 3]
# c[ 4- 7]
# c[ 8-11]
# c[32].x
# c[33].xyz
# c[33].w
DP4 R0.x,c[ 0],v[OPOS];
DP4 R0.y,c[ 1],v[OPOS];
DP4 R0.z,c[ 2],v[OPOS];
DP4 R0.w,c[ 3],v[OPOS];
ADD R2.xyz,c[33],-R0;
DP3 R2.w,R2,R2;
RCP R2.w,R2.w;
MUL R2,R2,R2.w;
MUL R2,R2,c[34].x;
ADD R0.xyz,R0,R2;
DP4 o[HPOS].x,c[ 4],R0;
DP4 o[HPOS].y,c[ 5],R0;
DP4 o[HPOS].z,c[ 6],R0;
DP4 o[HPOS].w,c[ 7],R0;
DP3 R1.x,c[ 8],v[NRML];
DP3 R1.y,c[ 9],v[NRML];
DP3 R1.z,c[10],v[NRML];
DP3 R1.w,R1,R1;
RSQ R1.w,R1.w;
MUL R1.xyz,R1,R1.w;
MOV R2.xy,R1.z;
MOV R2.w,c[32].x;
LIT R2,R2;
MOV o[COL0].xyz,R2.y;
MOV o[COL1].xyz,R2.z;
DP3 R0.w,R0,R0;
RSQ R0.w,R0.w;
MUL R0,R0,R0.w;
DP3 R2.w,R0,R1;
ADD R2.w,R2.w,R2.w;
MAD R2.xyz,R1,-R2.w,R2;
MOV o[TEX0].xy,R2;
END
0096馬糞ウニげろげろ02/02/01 01:59ID:???
!!VSP1.0
# v[ 0].xyz
# v[ 0].w
# c[ 0- 3]
# c[33].xyz
# c[33].w
MOV R0.xyz,v[0];
SGE R0.w,R0.w,R0.w;
DP4 R1.x,c[ 0],R0;
DP4 R1.y,c[ 1],R0;
DP4 R1.z,c[ 2],R0;
MOV R1.w,v[0].w;
MOV c[33],R1;
END
0097名前は開発中のものです。02/02/01 04:55ID:???
おい、そこの「馬糞ウニげろげろ」。
ちょっとこっち来いや。もっとうまいアセンブラコードがこっちにあるぜ。
http://www.ugtop.com/spill.shtml

0098名前は開発中のものです。02/02/02 06:31ID:???
▼゚Д。▼カフッ▼゚Д。▼カフッ
0099名前は開発中のものです。02/02/02 10:20ID:???
#include <stdlib.h>
#include <time.h>
#include <curses.h>
char b[36];int p[16],t;WINDOW *w;
disp_board(int t){int i;for(i=0;i<16;i++){if(p[i]==15)sprintf(b," ");else sprintf(b,"%2d",p[i]+1);
mvwaddstr(w,2*(i/4)+2,3*(i%4)+4,b);}sprintf(b,"%d Step",t); mvwaddstr(w,3,44,b);}
getspc(){int i;for(i=0;i<16;i++)if(p[i]==15)return i;return -1;}
init_game(){int i,x;initscr();noecho();cbreak();w=newwin(LINES,COLS-1,0,0);srand(time(NULL));
for(i=0;i<4;i++){mvwaddstr(w,i*2+1,3,"+--+--+--+--+");
mvwaddstr(w,i*2+2,3,"| | | | |");}mvwaddstr(w,9,3,"+--+--+--+--+");for(i=0;i<16;i++)p[i]=i;t=0;
while(t<160){x=getspc();switch(rand()%4){case 0:if(x/4)move_panel(x,x-4);break;
case 1:if((x/4)!=3)move_panel(x,x+4);break;case 2:if((x%4)!=3)move_panel(x,x+1);break;
case 3:if(x%4)move_panel(x,x-1);break;}}t=0;disp_board(t);}
move_panel(int d, int s){int i;p[d]=p[s];p[s]=15;t++;
if(s==15){for(i=0;i<16;i++)if(p[i]!=i)return 0;return 1;}return 0;}
int main(void){char r;int i,c,e=0,f=0;init_game();wrefresh(w);t=0;
while(!e){c=getspc();r=wgetch(w);f=0;switch(r){case 'x':case 'j':case '2':
if(c/4)f=move_panel(c,c-4);break;case 'e':case 'k':case '8':if((c/4)!=3)f=move_panel(c,c+4);break;
case 's':case 'h':case '4':if((c%4)!=3)f=move_panel(c,c+1);break;case 'd':case 'l':case '6':
if(c%4)f=move_panel(c,c-1);break;case 'q':case 0x1b:e=1;sleep(5);break;}disp_board(t);wrefresh(w);
if(f){mvwaddstr(w,14,43,"Cleared !!");wrefresh(w);sleep(10);break;}}wclear(w);wrefresh(w);endwin();return 0;}
01009902/02/02 10:25ID:GSAKw8sm
このソースは15パズルです。
テンキー、vi、wordstar のいずれでも操作できます。
35, 43の作者とは別人ですが、
自分もcurses環境(ちなみにcygwin)で作りました。

ちなみに自動的に解法を表示するとかいう機能はありません。
(今月号のCマガによるとかなり面倒らしい)

ついでに100ゲットズサー。
0101名前は開発中のものです。02/02/02 13:23ID:???
//あるマスの移動コストの計算
void CalculateMoveCostASquare(int type, int move, int sx, int sy)
{
int lp, xx, yy, min, cost;

//範囲外
if(sx < 0 || sx >= MAP_X || sy < 0 || sy >= MAP_Y)
return;

//進入不可能
cost = m_movecost[type][m_mapchipatb[m_mapchipset * MAPCHIPMAX + m_map_geo[sy][sx] ].atb];
if(cost == -1
|| m_map_magic[sy][sx].kind == GM_SANCTUARY)
return;

//一番少なく進入出来るところをチェック
xx = sx + 1; yy = sy;
min = 999999;
for(lp = 0; lp < 4; lp ++) {
if(xx >= 0 && xx < MAP_X && yy >= 0 && yy < MAP_Y) {
if(mgm_move_cost[yy][xx] != -1 && mgm_move_cost[yy][xx] < min)
min = mgm_move_cost[yy][xx];
}
xx += cpu_dx[lp];
yy += cpu_dy[lp];
}
//ここには進入できない
if(min == 999999 || cost + min > move)
return;

if((mgm_move_cost[sy][sx] == -1 || cost + min < mgm_move_cost[sy][sx])
&& (m_map_unit[sy][sx] == UNITMAX
|| (CheckBelong(m_unit[m_map_unit[sy][sx]].belong, m_unit[mgm_unit].belong) == TRUE
|| (type == MT_FLYING && m_unit[m_map_unit[sy][sx]].movetype != MT_FLYING))))
mgm_move_cost[sy][sx] = cost + min;
else
return;

if(m_map_unit[sy][sx] == UNITMAX)
m_map_chk[sy][sx] = 0;

CalculateMoveCostASquare(type, move, sx + 1, sy);
CalculateMoveCostASquare(type, move, sx - 1, sy);
CalculateMoveCostASquare(type, move, sx, sy + 1);
CalculateMoveCostASquare(type, move, sx, sy - 1);

return;
}
010210102/02/02 13:25ID:???
捻りの無い駄目ソースをウプ
0103名前は開発中のものです。02/02/11 12:28ID:???
0104名前は開発中のものです。02/02/12 11:26ID:???
ブロックの無いブロック崩しなんだけど
もうちょっとソース絞れませんか?
http://isweb38.infoseek.co.jp/computer/honten1/dat/omega0028.lzh
0105名前は開発中のものです。02/02/12 14:06ID:???
>>104
403になるぞ
ファイルもう無いのか?
0106名前は開発中のものです。02/02/12 14:25ID:???
これならどーだ
http://isweb34.infoseek.co.jp/computer/leftwall/pingpong2.lzh
0107名前は開発中のものです。02/02/12 14:48ID:???
>>106
またもや403
iswebってファイルの直リンできるのか?
0108名前は開発中のものです。02/02/12 16:11ID:???
今度はこれで
http://isweb34.infoseek.co.jp/computer/leftwall/index.html
0109名前は開発中のものです。1/302/02/17 01:08ID:???
'Microsoft Visual Basic 6.0(SP5)
'Formに、ラベルとコマンドボタンとタイマーを設置する
'ラベルのオブジェクトは、label1とする
'コマンドボタンのオブジェクトは、Command1とする
'タイマーのオブジェクトは、Timer1とする
Option Explicit
'全ての文字を表示したか判定するフラグ
Public Stoneman As Boolean

Private Sub Command1_Click()
'タイマーイベント発動
Timer1.Enabled = True
'200間隔
Timer1.Interval = 200
'タイマーイベントプロシージャの呼び出し
Call Timer1_Timer

End Sub

Private Sub Form_Load()
'フラグ初期値は偽に設定する
Stoneman = False

End Sub
'タイマーイベントでどんなことをさせるのか?の処理
Private Sub Timer1_Timer()
'文章の型を決める変数
Static golem(4) As String
'配列に、格納する文章数を格納する変数
Static D_Andy As Integer
'取り出していない残りの文字数を格納する変数
Static t As Integer
'Mid関数で取り出した文字を保持しておく変数
Static D_Madou As String
'Len関数にて、取り出した全体の文字数を格納する変数
Dim Dragon As Integer
0110名前は開発中のものです。2/302/02/17 01:10ID:???
golem(0) = "レッド「本当は何を知りたい?俺が後悔しているかどうか、か?」"
golem(1) = "レッド「・・・後悔しなかった日は一日とてないよ。こうなった事をじゃない。当時の自分を振り返って言うんだ」"
golem(2) = "レッド「・・・ヤツに言ってやりたい。バカをするなと言ってやりたい。世の中の事を教えたい・・・でも、出来ない」"
golem(3) = "レッド「ガキの頃の俺は遠くに去り、残ったのは老いぼれの自分だ」"
golem(4) = "レッド「時間は戻らない」"
'Len関数で、全体の文字数を取得
Dragon = Len(golem(D_Andy))
'1文字ずつ取るから、1ずつ値を増やす
t = t + 1
'Mid関数で、どの文字を取得するか設定する
D_Madou = D_Madou + Mid(golem(D_Andy), Dragon - (Dragon - t), 1)
'取り出した文字を保持しつつ、表示する
Label1.Caption = D_Madou
'増減値が、全体の文字数を超えたとき
If Dragon < t Then
'増減値をゼロにもどす
t = 0
'保持している文字をクリアする
D_Madou = ""
'全ての文字を表示したので、フラグを真に
Stoneman = True
'一つの配列の文が終わるたび、配列の値を1増やす
D_Andy = D_Andy + 1
'配列の数が設定した値を超えたときのエラ−防止処理
If D_Andy > 4 Then
'初めの配列の値に戻す
D_Andy = 0

End If
'タイマーイベントを止めるかどうかの
'判定プロシージャへ行く
Call Hantei

End If

End Sub
0111名前は開発中のものです。3/302/02/17 01:11ID:???
'タイマーイベントを止めるかどうかの判定処理
Private Sub Hantei()
'フラグが真の時
If Stoneman = True Then
'タイマーイベント終了
Timer1.Enabled = False

End If

End Sub
0112名前は開発中のものです。02/02/17 01:16ID:kh4ENDqz
'「ファミコン探偵倶楽部」みたいな、一文字ずつ表示するプログラムです。
'ユーザに、一文字ずつ目で追わせることで、より文章を読ませるような効果があると
'思います。
'APIとか使えば、もっとすごいと思いますが、ボクは知りません。
'だから、今までクソの役にも立たんと思っていた、Mid関数やLen関数を使いました。
'それをタイマーイベントと組み合わせると、こんなことができるとは思いませんでした。
'仕事中に関係ないことしてて、職場のみなさんごめんなさい。
'そして、文字列処理系関数、今までナメてました。ごめんなさい・・・そして、ありがとう。
■ このスレッドは過去ログ倉庫に格納されています