トップページ > 記事閲覧
端を繋げた画像をスライドするルーレット
名前:ゆうじ 日時: 2023/05/29 14:53

PNG画像で作ったルーレット こんな感じ→ [1][2][3] を、ウィンドウに表示する時、最後の部分を最初の部分と連結してループする方法を教えてください。 ↓理想はこんな感じです。 ttps://youtu.be/p4UXP_a8vMY
メンテ

Page: 1 |

Re: 端を繋げた画像をスライドするルーレット ( No.1 )
名前:たろう 日時:2023/05/29 15:34

ゆうじさんこんにちは、 適当ですみませんが、これで動くと思います 誤解があったらごめんなさいm(__)m (※画像は50x50幅を前提に作ってあります) #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; DxLib_Init(); SetDrawScreen( DX_SCREEN_BACK ) ; int img[5]; img[0]=LoadGraph("0.png"); img[1]=LoadGraph("1.png"); img[2]=LoadGraph("2.png"); img[3]=LoadGraph("3.png"); img[4]=LoadGraph("4.png"); int y[3][5]={{0,50,100,150,200},{0,50,100,150,200},{0,50,100,150,200}}; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; for(int i=0;i<5;i++){y[0][i]+=2;if(y[0][i]>250)y[0][i]-=250;} for(int i=0;i<5;i++){y[1][i]+=4;if(y[1][i]>250)y[1][i]-=250;} for(int i=0;i<5;i++){y[2][i]+=3;if(y[2][i]>250)y[2][i]-=250;} for(int i=0;i<5;i++){DrawGraph( 50,y[0][i],img[i],1);} for(int i=0;i<5;i++){DrawGraph(100,y[1][i],img[i],1);} for(int i=0;i<5;i++){DrawGraph(150,y[2][i],img[i],1);} DrawBox(0,0,500,50,GetColor(0,0,0),1); DrawBox(0,250,500,500,GetColor(0,0,0),1); ScreenFlip() ; } DxLib_End() ; return -1 ; }
メンテ
Re: 端を繋げた画像をスライドするルーレット ( No.2 )
名前:東海鉄道 日時:2023/05/29 16:53

/* 外から失礼します 別の自作プログラムを使っている部分などを修正するなどしたため誤植等あるかもしれませんが 修正前のプログラムのほうは動作しました メインループ内等でUpdate() Draw()の順で呼んであげてください リールを止めたいときはStopに1を入れてやれば止まるはずです resourceにはグラフィックハンドルを r1v,r2v,r3vにはスロットの目の出る順を r1c,r2c,r3cには{0,1,2,3}を代入しておいてください 16*16の画像を32*32に拡大描画する前提で作ったものの流用なので サイズ変更はできるはずですができなかったらごめんなさい うまく動かないようでしたらお声掛けください 気づいたら修正しようと思います */ #include "DxLib.h" #include <map> #include <array> int r1y; int r2y; int r3y; const int fx=0; const int fy=0; const int moveParFlame=10; const int maxCY=32; const int xsize=32; std::array<unsigned char, 4> r1c; std::array<unsigned char, 4> r2c; std::array<unsigned char, 4> r3c; std::array<unsigned char, 6> r1v; std::array<unsigned char, 6> r2v; std::array<unsigned char, 6> r3v; std::map<unsigned char, int> resource; int Stop; void Update() { if (runner == 0) { r1y -= moveParFlame; r2y -= moveParFlame; r3y -= moveParFlame; if (r1y <= 0) { r1c[0] += r1v.size() - 1; r1c[1] += r1v.size() - 1; r1c[2] += r1v.size() - 1; r1c[3] += r1v.size() - 1; r1c[0] %= r1v.size(); r1c[1] %= r1v.size(); r1c[2] %= r1v.size(); r1c[3] %= r1v.size(); r1y = maxCY; r2c[0] += r2v.size() - 1; r2c[1] += r2v.size() - 1; r2c[2] += r2v.size() - 1; r2c[3] += r2v.size() - 1; r2c[0] %= r2v.size(); r2c[1] %= r2v.size(); r2c[2] %= r2v.size(); r2c[3] %= r2v.size(); r2y = maxCY; r3c[0] += r3v.size() - 1; r3c[1] += r3v.size() - 1; r3c[2] += r3v.size() - 1; r3c[3] += r3v.size() - 1; r3c[0] %= r3v.size(); r3c[1] %= r3v.size(); r3c[2] %= r3v.size(); r3c[3] %= r3v.size(); r3y = maxCY; } if (Stop == 1) { if (mode == modeJuckpot) { for (unsigned char i = 0; i < 10; ++i) { if (r1c[0] == slot7 || r1c[1] == slot7 || r1c[2] == slot7 || r1c[0] == slotBar || r1c[1] == slotBar || r1c[2] == slotBar) { break; } ++r1c[0]; ++r1c[1]; ++r1c[2]; ++r1c[3]; r1c[0] %= r1c.size(); r1c[1] %= r1c.size(); r1c[2] %= r1c.size(); r1c[3] %= r1c.size(); } } r1y = 0; runner = 1; } } else if (runner == 1) { r2y -= moveParFlame; r3y -= moveParFlame; if (r2y <= 0) { r2c[0] += r2v.size() - 1; r2c[1] += r2v.size() - 1; r2c[2] += r2v.size() - 1; r2c[3] += r2v.size() - 1; r2c[0] %= r2v.size(); r2c[1] %= r2v.size(); r2c[2] %= r2v.size(); r2c[3] %= r2v.size(); r2y = maxCY; r3c[0] += r3v.size() - 1; r3c[1] += r3v.size() - 1; r3c[2] += r3v.size() - 1; r3c[3] += r3v.size() - 1; r3c[0] %= r3v.size(); r3c[1] %= r3v.size(); r3c[2] %= r3v.size(); r3c[3] %= r3v.size(); r3y = maxCY; } if (Stop == 1) { r2y = 0; runner = 2; } } else if (runner == 2) { r3y -= moveParFlame; if (r3y <= 0) { r3c[0] += r3v.size() - 1; r3c[1] += r3v.size() - 1; r3c[2] += r3v.size() - 1; r3c[3] += r3v.size() - 1; r3c[0] %= r3v.size(); r3c[1] %= r3v.size(); r3c[2] %= r3v.size(); r3c[3] %= r3v.size(); r3y = maxCY; } if (Stop == 1) { r3y = 0; runner=0; } } } void Draw() { DrawRectExtendGraphF2(fx, fy, fx+xsize, fy+maxCY- r1y, 0, 0, 16, 16, resource.at(r1v[r1c[0]]), true); DrawRectExtendGraphF2(fx, fy, fx+xsize, fy+maxCY- r2y, 0, 0, 16, 16, resource.at(r2v[r2c[0]]), true); DrawRectExtendGraphF2(fx, fy, fx+xsize, fy+maxCY- r1y, 0, 0, 16, 16, resource.at(r3v[r3c[0]]), true); DrawRectExtendGraphF2(fx, fy+maxCY, fx+xsize, fy+maxCY*2- r1y, 0, 0, 16, 16, resource.at(r1v[r1c[1]]), true); DrawRectExtendGraphF2(fx, fy+maxCY, fx+xsize, fy+maxCY*2- r2y, 0, 0, 16, 16, resource.at(r2v[r2c[1]]), true); DrawRectExtendGraphF2(fx, fy+maxCY, fx+xsize, fy+maxCY*2- r3y, 0, 0, 16, 16, resource.at(r3v[r3c[1]]), true); DrawRectExtendGraphF2(fx, fy+maxCY*2-r1y, fx+xsize, fy+maxCY*3- r1y, 0, 0, 16, 16, resource.at(r1v[r1c[2]]), true); DrawRectExtendGraphF2(fx, fy+maxCY*2-r2y, fx+xsize, fy+maxCY*3- r2y, 0, 0, 16, 16, resource.at(r2v[r2c[2]]), true); DrawRectExtendGraphF2(fx, fy+maxCY*2-r3y, fx+xsize, fy+maxCY*3- r3y, 0, 0, 16, 16, resource.at(r3v[r3c[2]]), true); DrawRectExtendGraphF2(fx, fy+maxCY*3-r1y, fx+xsize, fy+maxCY*4, 0, 0, 16, 16, resource.at(r1v[r1c[3]]), true); DrawRectExtendGraphF2(fx, fy+maxCY*3-r2y, fx+xsize, fy+maxCY*4, 0, 0, 16, 16, resource.at(r2v[r2c[3]]), true); DrawRectExtendGraphF2(fx, fy+maxCY*3-r3y, fx+xsize, fy+maxCY*4, 0, 0, 16, 16, resource.at(r3v[r3c[3]]), true); } //#1234
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存