2011-10-30 5 views
0

私はプログラミングがとても新しいです。私は今のところ私が作業しているPythonという言語の表面に触れただけです。 1-100のような範囲でランダムなローリング数を表示できるプログラムを作成しようとしています。それを説明することができないため、私はむしろ私が探しているもののビデオを見せたいと思います。 http://www.youtube.com/watch?v=88SENZe6Z3I 約33秒で、プレイヤーがキャラクター特性に割り当てるために停止しなければならないローリング番号を見ることができます。私が知りたいことは、Pythonでこの同じタイプの関数を提供するプログラムを書くことが可能な場合です。 Pythonでない場合、少し慣れ親しんでいる唯一の他の2つの言語は、C#とJavaです。それらを1つまたは組み合わせて書くことは可能でしょうか? 可能であれば、この取り組みにリソースの方向性を指摘できますか?私はこれを掲示する前に検索をしましたが、何を探したらいいのか分からないので空になっていました。ゲームのローリング統計

ありがとうございます!

答えて

1

「問題」は、コマンドラインインターフェイスを使用して直接実行することができないということです。あなたがゲーム開発を検討しているなら、とにかくグラフィカルなインターフェースを持っていると思われますので、アニメーション化にもっと多くのオプションを与えるライブラリがあれば見てください。

それにもかかわらず、コマンドラインの可能な解決方法にはマルチスレッドが関係します。その理由は、(連続的に変化する)数字を印刷することも、キーボード入力を待つこともできないからです。実際には、通常のコマンドラインはかなり制限されています。

スレッドアプローチを使用して解決策を見つけることができます。しかし、いくつかのゲーム開発を進めている場合は、実際のグラフィックライブラリ、またはあなたを助けることができるゲームライブラリをチェックアウトする必要があります。

from random import randint 
from time import sleep 
from threading import Thread 
import sys 

class RollAnimation (Thread): 
    activated = True 
    number = None 

    def run (self): 
     while self.activated: 
      self.number = randint(1, 100) 
      sys.stdout.write('\r{: >3}'.format(self.number)) 
      sys.stdout.flush() 
      sleep(0.05) 

t = RollAnimation() 
t.start() 

# Waiting for enter 
input() # use raw_input() for Python 2.x 
t.activated = False 

print('Final roll result:', t.number) 
+0

私はそれを実行しようとするとエラーが発生し、私は[Pastebin](http://pastebin.com/XxU7J0sy)に投稿しました。それでも、Pythonのプロセスを終了して終了させる必要があることを除いて、それは動作します。しかし、それ以外の素晴らしい例です。 – Griffin

+0

コードはPython 3に含まれています。xの場合は、 'input()'を 'raw_input()'に置き換え、 'print'文からかっこを取り除く必要があります。 – poke

0

アプリケーションのグラフィカルな部分について、あなたはpygameのを見てください。http://pygame.org

1

人々はあなたが何をしたいのかを理解するためにYouTubeのビデオを見るために持っている場合は、正しくあなたの質問を策定していません。ビデオを見ることなく、私はあなたがランダムな整数がどのように働くかを知りたいと思うとしか思えません。

import random 

x = random.randint(1, 100) 

あなたはそれが転がりたい場合は、単にいずれかのforループ内の三つの変数やディスプレイ3つのランダムな整数を作成し、しばらくの間またはループのことを置くことができます。 例を示します。

import random 
import sys 

try: 
    rolls = int(sys.argv[1]) 
except IndexError: 
    print "Usage: "+sys.argv[0]+" [rolls]" 
    sys.exit(1) 

for i in range(1, rolls+1): 
    print "Roll "+str(i) 
    for i in range(0, 3): 
     print random.randint(1, 100) 
+0

正確には* 3つの数字が由来していますか? – poke

+0

@poke私はローリング番号がいくつかの無作為化された整数(スロットマシンのようなもの)を表示して何かをしなければならないと仮定しました。私の例の目的は、ランダムな整数を作成する方法を示すことでした。 – Griffin

+0

ああ、1から100までの3つのスロットが少し奇妙に聞こえます^^ – poke

関連する問題