数字をドゥルルルルルルってするみたいなやつ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
名無し

数字をドゥルルルルルルってするみたいなやつ

#1

投稿記事 by 名無し » 4ヶ月前

すみません、始めたばっかでよく分からないんですが、
3桁程度をランダム表示させて一定時間経つごとに1桁ずつ数字を確定するみたいな事がしたいです。(な○でも鑑定団の結果出たときみたいな数字の出し方がしたいです。)

コードを教えていただきたいです。
よろしくお願いします。

かずま

Re: 数字をドゥルルルルルルってするみたいなやつ

#2

投稿記事 by かずま » 4ヶ月前

コンパイラは何ですか?

コード:

#include <stdio.h>   // putchar, fflush
#include <stdlib.h>  // rand, srand
#include <time.h>    // time
#if defined(__GNUC__)
#include <unistd.h>  // usleep
#define SLEEP(msec)  usleep(msec * 1000)
#else
#include <windows.h> // Sleep
#define SLEEP(msec)  Sleep(msec)
#endif

#define N 8

void display(void)
{
    int i, j, k, a[N];
    srand(time(0));
    for (i = N; i > 0; i--) {
        for (j = 0; j < 6; j++) {
            putchar('\r');
            for (k = 0; k < i; k++) putchar(a[k] = rand() % 10 + '0');
            for (k = i; k < N; k++) putchar(a[k]);
            putchar('\a');
            fflush(stdout);
            SLEEP(100);
        }
    }
    putchar('\n');
}

int main(void)
{
    char buf[256];
    do {
        display();
        printf("once again? (y/n) ");
    } while (fgets(buf, sizeof buf, stdin) && buf[0] == 'y');
}

名無し

Re: 数字をドゥルルルルルルってするみたいなやつ

#3

投稿記事 by 名無し » 4ヶ月前

すいません、返信遅れました
c++です。

名無し

Re: 数字をドゥルルルルルルってするみたいなやつ

#4

投稿記事 by 名無し » 4ヶ月前

コードありがとうございます。試してみたところ、ちゃんと動きました。
とても参考になります。
1つご質問させていただきます。
SLEEPだと処理停止してしまうので、スムーズに動くような処理ってどうすればいいでしょうか?

自分の今作ってるコードに組み込みたいので、よろしくお願いします。

かずま

Re: 数字をドゥルルルルルルってするみたいなやつ

#5

投稿記事 by かずま » 4ヶ月前

名無し さんが書きました:
4ヶ月前
SLEEPだと処理停止してしまうので、スムーズに動くような処理ってどうすればいいでしょうか?

自分の今作ってるコードに組み込みたいので、よろしくお願いします。
情報不足のため、よろしくお願いされません。

停止してしまう処理とはどんなものですか?
今作っているコードとはどんなものですか?
OS は何ですか? Windows それとも Linux?
言語は C++ だそうですが、
コンパイラは何ですか? VC++ それとも gcc?
何かライブラリを使っていますか? DXライブラリ それとも OpenCV?

Windows 10 で Visual Studio 2017 で DXライブラリの例です。

コード:

#include "DxLib.h"

void update(char *str, const char *s, int k)
{
    for (int i = 0; i < k; i++)
        str[i] = GetRand(9) + '0';
    for (int i = k; i < 8; i++)
        str[i] = s[i];
    str[8] = '\0';
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
    int y = 40, t = 0, k = 8;
    char str[9];
    unsigned c1 = GetColor(0, 255, 0), c2 = GetColor(0, 255, 255);
    while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) {
        int t1 = t % 120 - 60;
        y = 40 + 0.1 * t1 * t1;
        DrawBox(300, y, 300 + 40, y + 30, c1, TRUE);
        if (t % 6 == 0) update(str, "12345678", k);
        if (k > 0 && t % 30 == 0) k--;
        DrawString(100, 100, str, c2);
        if (CheckHitKey(KEY_INPUT_ESCAPE)) k = 8;
        t++;
    }
    DxLib_End();
    return 0;
}  
ESC を押すと、表示がグルグルします。

返信

“C言語何でも質問掲示板” へ戻る