0

問題:座標を手動でコーディングすることで、多くの時間を浪費し、バグのある肥大化したコードを作成します。同じ結果が得られるループ構造をこの冗長なコードに置き換える方法を学ぶのに助けが必要です。現在、x座標とy座標は、それぞれxCoordsとyCoordsという名前の別々の配列に格納されています。これを単純化して、このプログラムのよりエレガントなバージョンを作成するにはどうすればよいですか?

[注:これは私の最初のStackOverflow投稿です。スタイル、エチケット、投稿エラーを教えてください。修正します。このフォーラムは私にとって不可欠であり、皆さんの助けに感謝します。]

関連する詳細:

  • 「ドットマトリックス」と呼ばれる2人用GUIゲームを作成しています。ユーザーは、マウスクリックを使用してウィンドウを操作します。このゲームのオンラインバージョンは、このリンクにあります。座標点をプロットすることは、プレーヤーの方向性を示し、ゲームボード全体であるため重要です。このコードスニペットには、まだ記述していないため、実際のゲームロジックは含まれていません。
  • JohnZelleのPythonプログラミング本のグラフィックライブラリを使用しています。

ソースコード:

    # dotmatrix.py
    # Dot Matrix Game
    # Michael Morelli
    # mmorelli at live dot com
    # Created: 03-24-13 with Python 2.7.3 and PyScripter

    from graphics import *

    win = GraphWin("Dot Matrix", 500, 500)
    win.setCoords(0.0, 0.0, 10.0, 10.0)
    win.setBackground("white")

    xCoords = [1,1,1,1,1,1,1,1,1,
               2,2,2,2,2,2,2,2,2,
               3,3,3,3,3,3,3,3,3,
               4,4,4,4,4,4,4,4,4,
               5,5,5,5,5,5,5,5,5,
               6,6,6,6,6,6,6,6,6,
               7,7,7,7,7,7,7,7,7,
               8,8,8,8,8,8,8,8,8,
               9,9,9,9,9,9,9,9,9]

    yCoords = [1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9,
               1,2,3,4,5,6,7,8,9]

    for i in range(81):
        Text(Point(xCoords[i], yCoords[i]), "*").draw(win)
        i+=1 # This for loop iterates through each of the coordinate arrays
             # and plots an * asterisk at each coordinate locus. There is a plot()
             # method included with the graphics library, but it plots single-pixel
             # points and are hardly visible. I do not think this will affect the game.

    input("Press <Enter> to quit.")
    win.close()

ご協力ありがとうございました!-マイケル

4

1 に答える 1

0

コードロジックは、2つのネストされたループを使用するのと同じように見えます。

for xCoord in xrange(1, 10):
    for yCoord in xrange(1, 10):
        Text(Point(xCoord , yCoord ), "*").draw(win)
于 2013-03-25T03:37:14.313 に答える