T_NAKAの阿房ブログ

アクセスカウンタ

zoom RSS Python で Graphic(2)

<<   作成日時 : 2015/05/14 00:01   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

実は、次の課題は出来なかったので、飛ばしてしまいました。
次章の課題の中に答えがあったので備忘録として書いておきます。

[課題]--------------------------------------------------------------
The tetris board is typically 10x20 squares, where a square has a width of 30 pixels.
テトリスボード は典型的には 10×20 マスの正方形で構成され 1つの正方形は 30pixel 幅になっています。

Each block occupies a single square at a time.
どのブロックも同時に1つの正方形(マス)で占有されています。

For this problem, we’ll think of the board not in terms of pixels but in terms of squares -so we’ll pass in Points in terms of square position, and your methods should convert these into pixels for display purposes.
そのため、我々はボードの構成に関して pixel ではなく、マスで考えます。
そこで、マスの位置関係で一旦考えた上で、あなたの作成するメソッドで表示のために pixel へと変換します。

Create a new Block class that inherits from the Rectangle class and save it in a file called tetrominoes.py.
Rectangle クラスから引き継いだ、新しい Block クラスを作成します。
そしてそれを tetrominoes.py と呼ばれるファイルにセーブします。

It should have x and y attributes that correspond to the position of the block on the tetris board, in terms of squares, not pixels.
テトリスボード上にブロックの位置に対応する x と y 属性を置きます。
それは pixel 単位ではなく、マス単位になります。

The position (0,0) is the top left corner of the board, and (9, 19) is the bottom right corner.
(0,0)の位置はテトリスボードの最左上部 (9,19) が最右下部になります。

Here is how you can use the block:
以下では、ブロックの使用方法です。

win = GraphWin("Tetrominoes", 150, 150)

# the block is drawn at position (1, 1) on the board

block = Block(Point(1, 1), 'red')

# the __init__ method for your block should deal with converting
# the Point into pixels block.draw(win)

win.mainloop()
and what it will look like on a 5x5 board:

結果として次のような window が表示されるように Block クラスを作れ

画像











--------------------------------------------------------------

前記事で示したようにまず1行目に

from graphics import *

が必要でしょう。
分からないのは Block クラスの引数で (Point(1, 1), 'red') ということなんで、Point(1, 1) を引き取ったときに x,y 座標の変数にどうやって変換するのか?という問題です。

この答が次章の課題の中にありました。
それを組み込んだ結果が次のようになりました。
画像




Point(1, 1) → pos → pos.x=1, pos.y=1

というふうになるんですね。。

また上のクラスの Rectangle をどのように初期化するかという問題に対しては
[引用]------------------------------------------------------
思い出してください、スーパークラスの初期化は、スーパークラス自身の init メソッドを呼び出すことで実施します。
例: superclass.__init__(self,param1,param2,...)
------------------------------------------------------------
ということなので、
具体的には

Rectangle.__init__(self, p1, p2)

とするようです。

今日はこの辺で。。


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Python で Graphic(2) T_NAKAの阿房ブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる