/*
外から失礼します
別の自作プログラムを使っている部分などを修正するなどしたため誤植等あるかもしれませんが
修正前のプログラムのほうは動作しました
メインループ内等で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