4

Zelle の Python グラフィックス ライブラリを使用していますが、リスト内の数値を返すアルゴリズムを作成するのに少し助けが必要です。

基本的に、5x7 のボードを 100x100 ピクセルのグリッドに分割しています。これは、このようなリストに対応しています。

| 0| 1| 2| 3| 4|  
| 5| 6| 7| 8| 9|  
|10|11|12|13|14|  
|15|16|17|18|19|  
|20|21|22|23|24|  
|25|26|27|28|29|  
|30|31|32|33|34|  

マウスのクリックからグリッドの中心点を取得し、それをリストに対応する数値に変換するアルゴリズムが必要です。たとえば、ポイント (50,50) は 0 を返し、ポイント (150,150) は 6 を返します。

このアルゴリズムを理解するために時間を割いていただき、ありがとうございます。

4

2 に答える 2

5
In [1]: def f(x, y):
   ...:     return y // 100 * 5 + x // 100
   ...: 

In [2]: f(50, 50)
Out[2]: 0

In [3]: f(150, 150)
Out[3]: 6
于 2012-12-09T22:49:38.497 に答える
1
def point_to_xy(x_mouse,y_mouse):
    x_pos = math.floor(x_mouse/100) #or x_mouse // 100
    y_pos = math.floor(y_mouse/100) #or y_mouse // 100
    return x_pos,y_pos

def xy_to_index(x_pos,y_pos):
    array_0_width = 5 #the width of the 2d array
    #position is y*width + x_offset
    return y_pos*array_0_width+x_pos

x,y = point_to_xy(mouse.x,mouse.y)
print xy_to_index(x,y)

私はそれがうまくいくと思います

>>> x,y = point_to_xy(150,150) #x,y=1,1
>>> print xy_to_index(x,y)
6.0
>>> x,y = point_to_xy(50,50) # x,y=0,0
>>> print xy_to_index(x,y)
0.0
于 2012-12-09T22:47:23.877 に答える