Processingでの10進数表示について

このQ&Aのポイント
  • 初心者の方がProcessingで作成したカウントダウンタイマーが16進数で表示される問題があります。
  • コードの一部を変更することで、10進数で表示させる方法を教えてください。
  • hex関数の引数を変更することで、10進数での表示ができるようになります。
回答を見る
  • ベストアンサー

Processingでの10進数表示について

初めて質問させていただきます。プログラミングについては、全くの初心者です。 Processingで10000からのカウントダウンタイマーを作りたいと思い、様々なサイトを参考にさせていただき、次のようなプログラムを作りましたが、16進数での表示となっており、これを10進数表示に変える方法がどうしても分かりません…。 /** * Countdown(int) * */ import processing.video.*; MovieMaker mm; PFont font; String t; int cont; void setup(){ size(1200, 480); mm = new MovieMaker(this, 1200, 480, "Countdown.mov", 1, MovieMaker.VIDEO, MovieMaker.LOSSLESS); frameRate(100); background(1); smooth(); textSize(400); cont = 10000; } void draw(){ background(0); t = hex(cont, 5); if(cont < 16){ fill(255, 0, 0); } text(t,50,400); if(cont > 0){ cont -= 1; } mm.addFrame(); } void keyPressed() { if (key == ' ') { mm.finish(); println("save movie."); exit(); } } 色々と調べて、どうもhexの部分が良くないのではと思っているのですが、これをどのように変えても上手く行きません。 無知なもので、大変お恥ずかしい質問かと思いますが、ご教示のほどよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

補足ありがとうございます。 確かにint や dec では確かにうまくいきません。 nfという関数がありますので、それを使ってみてください。 使い方はhexと同じです。

参考URL:
http://www.musashinodenpa.com/p5/index.php?pos=620

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

hexは整数値を十六進文字列に変換するものですから、その部分がおかしいのではという推測はあっています。 ただ「どのように変えても」では、具体的にどのようなことを試したのかが見えてきません。 その辺りを補足していただけませんか?

ele340646
質問者

補足

sakusaker7さん コメントありがとうございます。 この部分に関しては、hexを整数値表示であると思われるintやdec?などに変えてみたり、hex自体を消してみたりなどをやってみましたが、エラーとなっているようで動きません。 これ以外に10進数の標記を見つけることができず、私の推測の範囲では他に考えが及ばないため、お尋ねいたしました。 このコメントも大変見当違いかもしれませんが、ご教示のほどよろしくお願いいたします。

関連するQ&A

  • processingでパックマンを反転させたい。

    【processingでパックマンを反転させたい。】 現在、パックマンが壁にぶつかると跳ね返りはするのですが、そのまま右向きで口をパクパクとしてしまいます。 なんとか左向きにしたいとarcを色々いじったりして試行錯誤しているのですが、どのようにすればわかりません。 壁にぶつかったとき左向きにするためにはどのようにプログラミングすればよいのでしょうか。 int i=25,j=0; int mflag =1; int rflag =1; void setup(){ size(400,50); smooth(); noStroke(); frameRate(20); } void draw(){ background(255); fill(0,0,0); arc(i,25,50,50,radians(j),radians(360-j)); i+= rflag * 5; j+= mflag * 8; if(j>40||j<0){ mflag = -mflag; } if(i==25||i==375){ rflag = -rflag; } }

  • Processingでのキーの同時入力

    Processingでゲームを作ろうとしているのですがキーボードの同時入力がうまくいきません。 例えば下記のようなキー入力に応じて黒い四角が動くプログラムを実行しました。方向キーを一つだけ押したときはサクサク動いてくれるのですが、→と↓を同時に押しても斜めに進んでくれません。また、→と←を押した場合もどちらか片方の方に動いてしまいます。 このような問題を解決したいので、Processingでキーボードの同時入力を判定するにはどのようにすればいいのか教えてください。 float x, y; void setup(){ size(400, 400); noStroke(); smooth(); } void draw() { background(255,255,255); fill(0,0,0); rect(x,y,20, 20); if (keyPressed && key == CODED){ if (keyCode == LEFT){ x -= 2; } if (keyCode == RIGHT){ x += 2; } if (keyCode == UP){ y -= 2; } if (keyCode == DOWN){ y += 2; } } }

  • processingのカーソルと画像の距離

    processingでクリスマスカードを作るのですが、どうしてもカーソルと雪だるまの距離があいてしまいます。この距離をあけないようにするにはどうしたらいいでしょうか?わかる方がいらっしゃいましたらどうぞよろしくお願いします。 void setup() { size(600,600); smooth(); noStroke(); } int flag = 0; void draw() { background(10,50,100); fill(0); rect(0,450,600,280); int x=50,y=30; fill(#006e54); triangle(300,50,400,200,200,200); triangle(300,50+x,420,280,180,280); triangle(300,50+2*x,420+y,280+2*x,180-y,280+2*x); fill(190,103,31); rect(275,280+2*x,50,150); textSize(45); fill(255,0,0); text("Merry X'mas!",170,580); fill(random(255),random(255),random(255)); translate(249,5); beginShape(); vertex(50 , 50 - 20); vertex(50 - 12 , 50 + 15); vertex(50 + 18 , 50 - 8); vertex(50 - 18 , 50 - 8); vertex(50 + 12 , 50 + 15); endShape(CLOSE); fill(random(255),random(255),random(255)); ellipse(20,90,30,30); fill(random(255),random(255),random(255)); ellipse(100,130,30,30); fill(random(255),random(255),random(255)); ellipse(10,170,30,30); fill(random(255),random(255),random(255)); ellipse(55,220,30,30); fill(random(255),random(255),random(255)); ellipse(130,250,30,30); fill(random(255),random(255),random(255)); ellipse(90,350,30,30); fill(random(255),random(255),random(255)); ellipse(30,300,30,30); fill(random(255),random(255),random(255)); ellipse(10,360,30,30); fill(random(255),random(255),random(255)); ellipse(160,320,30,30); fill(random(255),random(255),random(255)); ellipse(-40,330,30,30); if(mousePressed) { flag=1; } else { flag=0; } if(flag==1) { snowman(); } else { textSize(20); fill(255); text("Please press mouse to create a snowman!",-150,20); } } void snowman() { int speed=2; int x=mouseX; int y=mouseY; x+=random(-speed,speed);//let snowman move randomly // x=constrain(x,0,500); y+=random(-speed,speed); y=constrain(y,0,600); fill(255); //make a little snowman ellipse(x,y-50,50,50); ellipse(x,y,100,100); fill(0); ellipse(x-10,y-55,10,10); ellipse(x+10,y-55,10,10); fill(#ff0000); triangle(x-10,y-50,x+10,y-50,x,y-30); }

  • processingのプログラムの書き方について。

    課題で、どこからマウスをプレスしても20個もの四角を(0,0)まで数珠つなぎみたいにするプログラムをかいているんですが全然わかりません。 そのため大きさなどは瞬時に計算をするからmouse x, mouse yをつかいます だからrect(mouseX,mouseY,mouseX,mouseY)になると思うんですが。。 とにかく全部わかりません。教えてください。 自分が書いたのはこんなのですが、全然違います。 forループ、mouseX, mouseYを使うのはわかります int s = 600; int n = 20; int i = mouseX; void setup() { size(s,s); background(255); noStroke(); rectMode(CENTER); } void draw() { if(mousePressed) { for(int i=0; i<s; i++); { fill(255,0,0); rect(mouseX,mouseY,mouseX,mouseY); } } }

  • processingのマウス操作について

    現在processingを使って、画像のような図を作り、マウスでクリックしたところだけに色がついて、もう一度クリックすると色が消えるというプログラミングを作りたいと思っているのですが、なかなかうまくできません。 以下現在打ち込んでいるものです // Click within the image to change // the value of the rectangle after // after the mouse has been clicked int value = 255; int rect_size = 50; int num = 300 / rect_size; int x; void setup(){ size(300,300); } void draw(){ fill(value); for (int i = #ffffff;i < num;i++){ for (int j = 0;j < num;j++){ if (j%2 == 0){ x = i*rect_size*2; } else { x = i*rect_size*2+rect_size; } rect(x,j*rect_size,rect_size,rect_size); } } } void mouseClicked() { if (value == 255) { value = #aaaaaa; } else { value = 255; } } 使用言語はすべて英語です。 おそらく、drawのところでパターンとしてチェック模様を書いてしまっているのと、1マスだけに限定するという風な命令を書けていないからだと思うのですが、先生に訊いてもよくわかりません。 ご存じの方はご指導ご鞭撻のほどどうぞよろしくお願いします。

  • processingについて

    millis 関数を用いてマウスを押している間の経過時間をマウスカーソルの位置に表示するプログラムを作成せよ。 また、その時点での経過時間の最も長い時間をウインドウに左下に表示してある。動作するように、空欄を埋めよ。 また、変数宣言がされていない変数がある。適切な変数宣言を加えよ。この変数宣言のための空欄は用意されていない。という問題の一番最初の変数宣言?でつまずいています。 プログラムはこんな感じです。 PFont font; int maxTime; (a) pressing=false; void setup(){ size(400,400); maxTime = 0; smooth(); (b) textFont(font,24); } void draw(){ background(255); fill(0); if(mousePressed){ if(pressing == (c)){ startTime = millis(); pressing = (d); } interval = (e)-startTime; text(interval,mouseX,mouseY); }else{ pressing = (f); } if((g)> maxTime){ maxTime = (h); } text(maxTime,0,height-textDescent()); } 一番最初の、(a) pressing=false;の(a)に入るものが分かりません。 他のカッコは回答しなくてもよいので、(a)に入るものを教えてください。 そこさえ分かれば自分で解けそうな気がします。

  • プログラミングProcessing ピンポンゲーム

    Processingでピンポンゲームを作っています。作成したプログラムは void setup(){ size(400,300); } float x=10; float y=10; float dx=1; float dy=2; int count=0; float r_w=50.0; float a_w=15.0; float a_h=15.0; boolean checkHit(float x,float y){ if(y+a_h<250)return false; if(x+a_w>=mouseX&&x<=mouseX+r_w){ return true; }else{ return false; } } void draw(){ x=x+dx;y=y+dy; if(x+a_w>=400){ dx=-1; }else if(x<0){ dx=1; } if(y+a_w>300){ x=0; y=0; dx=1; dy=2; count=0; }else if(y<0){ dy=2; } background(0,0,128); rect(x,y,a_w,a_w); rect(mouseX,250,r_w,3); text(count,10,300); if(checkHit(x,y)){ dy=-2; count=count+1; } } このプログラムだとどうしてもラケットの下にボールが潜り込んだ時に ボールが跳ね返されてしまうバグが発生してしまいます。 問題はboolean checkHitの部分にあると思うのですが、 どのように調節すればよいか分かりません。 わかる方教えてください<(__)>

  • プロセッシングが出来ません。

    プロセッシングをしていて、ずっと「java.lang.NullPointerException」が出ています。 ですが、どこで起きているのかわかりません。 わかる人いたら教えてください。 String sc_data[]; int sc[][] = new int[sc_data.length][4]; void setup() { int dow, i; frameRate(1); size(480,640); sc_data = loadStrings("schedule.txt"); System.out.println(sc_data.length); for(i = 0; i < sc_data.length; i++){ sc[i] =int( sc_data[i].split(",")); println(sc[i]); } } int idx,k; int mo,d,h,m,s; int c_w = 60; float b_c,he,y; void set_color(int idx){ switch(idx){ case 1: fill(77,166,255,100); break; case 2: fill(128,255,0,100); break; case 3: fill(245,112,112,100); break; case 4: fill(117,125,198); break; case 5: fill(151,247,242); break; case 6: fill(255,214,70); break; case 7: fill(147,38,255); break; case 8: fill(2,214,70); break; case 9: fill(253,198,230); break; } } void make_sc(float y, int s[][], float t,int o){ int l; fill(255,255,255,100); rect(0,70,c_w,height); y = s[o][0]*25 + s[o][1]*5/12; t = s[o][2]*5/12; println(t); l = s[o][3] + 3; set_color(l); rect(0, y, c_w,t); } void barclock(float b){ b = h*25+m*5/12; //println(b); noStroke(); if ((b >= 0)&&(b < 150)){ set_color(1); } else if ((b >= 150)&&(b < 225)){ set_color(2); } else if ((b >= 225)&&(b < 450)){ set_color(3); } else { set_color(4); } rect(0,0,width,b); fill(0); textSize(15); text(+mo+" / "+d+" "+h+":"+m+":"+s,5,49); } void draw() { mo= month(); d = day(); h = hour(); m = minute(); s = second(); background(255); strokeWeight(1); barclock(b_c); for(int i = 0; i < sc_data.length; i++){ make_sc(y, sc, he,i); } }

  • 数十万番目の素数を表示させるプログラム

    以下のようなプログラムを作ってみたのですが、計算結果を出すのに大体10分くらいかかってしまいます。自分の知識の範囲でできる限りの工夫はしてみたのですが、10分はちょっと長すぎなのでもう少し短縮できる方法をどなたか教えてください。よろしくお願いします。 #include <stdio.h> #include <math.h> #include <time.h> int main(void) { int gakuseki,n,no,i,prime,j; time_t t1,t2; printf("学籍番号を入力して下さい。\n"); scanf("%d",&gakuseki); time(&t1); n=gakuseki%100000+900000; printf("%d番目の素数を計算中...\n",n); no=1; if(n==1){ i=2; }else{ i=1; while(no<n){ prime=1; i+=2; for(j=3;j<=sqrt(i);j+=2){ if(i%j==0){ prime=0; break; } } if(prime==1) no+=1; } } time(&t2); printf("%d番目の素数は%dです。\n",no,i); printf("計算時間は%ld秒でした。\n",t2-t1); return 0; }

  • 出現文字の種類の数

    下記のプログラムのファイルから読み込んだ出現文字の種類の数を取得するにはどうすれば良いでしょうか? また、 ー アルファベットでは大文字を全て小文字に置換 ー スペース、タブ、改行記号はスペースに置換 ー 数字は全て0に置換 ー その他の記号はそのまま使う という条件になっています。 #include<stdio.h> #include<ctype.h> #include<math.h> int cnt[256]; char chs[256]; int n=256; int main(void) { int k; for(k=0;k<n;k++) cnt[k]=0; inputdata(); heapsort(1,n); printdata_reverse(); } void inputdata() { char c; char *fnam="English.txt"; FILE *fp; char bff[80]; char *p; int k; fp = fopen(fnam,"r"); while(fgets(bff,80,fp)!=NULL) { for(p=bff;*p;p++) { c = *p; if(isalpha(*p)) c=tolower(*p); if(isdigit(*p)) c = '0'; if(isspace(*p)) c = ' '; cnt[c]++; chs[c] = c; } } fclose(fp); } void heapsort(int s,int t) { int i; makeheap(s,t); for(i = t; i>= s+1; i--) { swap(s,i); heapify(s,i-1); } } void makeheap(int s,int t) { int i; for(i = t; i >= s; i--) heapify(i,t); } void heapify(int p,int q) { int r; r = 2*p; if(r <= q){ if(r < q && cnt[r] > cnt[r+1]) r = r+1; if(cnt[p] > cnt[r]){ swap(p,r); heapify(r,q); } } } void swap(int i, int j) { int temp1,temp2; temp1=cnt[i]; cnt[i]=cnt[j]; cnt[j]=temp1; temp2=chs[i]; chs[i]=chs[j]; chs[j]=temp2; } void printdata_reverse() { int k; int m=0; double pcnt[100]; for(k=0;k<n;k++) { if(cnt[k]>0) m += cnt[k]; } printf("Characters in UN Charter.\n"); printf(" # C occ. %%\n"); for(k=0;k<n;k++) { if(cnt[k]>0) { pcnt[k] = 1.0*cnt[k]/m; printf("%3d '%c' %5d %f\n", k,chs[k],cnt[k],pcnt[k]); } } } 実行結果 Characters in UN Charter. # C occ. % 1 ' ' 4576 0.190643 2 'e' 2804 0.116819 3 't' 1827 0.076115 4 's' 1464 0.060992 5 'o' 1339 0.055785 6 'a' 1315 0.054785 7 'n' 1313 0.054701 8 'r' 1257 0.052368 9 'i' 1103 0.045953 10 'h' 972 0.040495 11 'c' 755 0.031454 12 'l' 645 0.026872 13 'd' 639 0.026622 14 'u' 593 0.024705 15 'f' 492 0.020497 16 'p' 430 0.017914 17 'm' 400 0.016665 18 'g' 285 0.011874 19 '0' 278 0.011582 20 'b' 253 0.010540 21 '.' 238 0.009915 22 'v' 203 0.008457 23 'y' 199 0.008291 24 ',' 192 0.007999 25 'w' 167 0.006957 26 '-' 54 0.002250 27 'k' 38 0.001583 28 'x' 34 0.001416 29 ''' 30 0.001250 30 'j' 27 0.001125 31 '(' 20 0.000833 32 ')' 20 0.000833 33 'z' 17 0.000708 34 'q' 13 0.000542 35 ':' 11 0.000458