ページ 11

時間をスリープさせて動くプログラムをつくりたい

Posted: 2009年10月13日(火) 20:28
by keiko
今晩は、宜しくお願いします。
 ランダムに*を発生させて、動いているようなプログラムをつくりたいと思って、下のようなコードをかいて時間をスリープさせてやりましたが、何故か単に表示が遅くなるだけで、実際に*がRand関数
により発生して、ゆれるような表示ができません.
 どこをどのように修正してやればよいのでしょうか。

宜しくご教示お願い致します。
=============================================================

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
char str[20] ;
int pos = 10 ;
int j ;
srand( time( NULL ) ) ;
do
{
Sleep(500);
for(j = 1 ; j < pos ; j ++ )
{
putchar(' ');
}
putchar('*');
putchar('\n');
switch ( rand() %3 )
{
case 0:
continue ;
break;
case 1:
pos = pos + 1 ;
break; default :
pos = pos - 1 ;
break;
}
} while(pos > 0 && pos < 1000 );
return 0 ;
}

Re:時間をスリープさせて動くプログラムをつくりたい

Posted: 2009年10月14日(水) 08:59
by softya
どこが、問題なのでしょうか?
Sleep(500);
と書かれていますので、0.5秒周期で画面が更新されます。
これは意図されて書かれたものでは無いのでしょうか?
それと*自身は左右に揺れて表示されますので、意図通り動いているみたいなのですが。

Re:時間をスリープさせて動くプログラムをつくりたい

Posted: 2009年10月14日(水) 09:58
by toyo
時間をスリープ == 表示が遅く
ですがスリープに期待している動作は何でしょうか
あと実行環境は何でしょう(OSやコンパイラー等)

Re:時間をスリープさせて動くプログラムをつくりたい

Posted: 2009年10月14日(水) 10:47
by たかぎ
必要な情報を出さなければ、どこで質問しても同じです。
http://oshiete1.goo.ne.jp/qa5357892.html

Re:時間をスリープさせて動くプログラムをつくりたい

Posted: 2009年10月14日(水) 18:44
by
0.5秒置きに表示されて、揺れているように思いますよ。
とりあえず#include <Windows.h>を

Re:時間をスリープさせて動くプログラムをつくりたい

Posted: 2009年10月14日(水) 18:56
by lbfuvab
こういう事がしたかったのかな?

環境はVC++ 2008 Exp Edition で WinXP Proと仮定しています。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<string.h>
#include<windows.h>

#define MAX (1000)

int main(){
    int pos=10,i;
    
    srand((unsigned)time(NULL));

    while(pos> 0 && pos< MAX){
        system("cls");
        for(i=0;i<MAX;i++)
            putchar((i==pos)?'*':' ');
        
        pos += rand()%3 - 1;

        Sleep(500); 
    }
    return 0;
}