fork download
  1. import tkinter
  2. import math
  3.  
  4. def meter_to_pixel(meters):
  5. return meters * 10
  6.  
  7. def move():
  8. global x, y, vy, t, x1, y1
  9.  
  10. # ボールの新しい位置を計算
  11. if MARGIN <= x <= WIDTH - MARGIN and MARGIN <= y <= HEIGHT - MARGIN:
  12. x = x + meter_to_pixel(vx0 * dt)
  13. v1 = vy
  14. v2 = vy - g * dt
  15. y = y + meter_to_pixel((v1 + v2) / 2.0 * dt)
  16. vy = v2
  17. t = t + dt
  18. else:
  19. x = x0
  20. y = y0
  21. vy = vy0
  22. t = t0
  23.  
  24. # ボールの位置を更新
  25. canvas.coords('ball', x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN)
  26. canvas.coords('ball1', x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN)
  27.  
  28. # 目盛り線を描画
  29. draw_scale_lines()
  30.  
  31. window.after(10, move) # 10ミリ秒ごとにmove関数を呼び出す
  32.  
  33. def draw_scale_lines():
  34. # 目盛り線を描画
  35. for i in range(1, (WIDTH - MARGIN) // (10 * scale_factor) + 1):
  36. x_pos = i * 10 * scale_factor
  37. canvas.create_line(x_pos, MARGIN, x_pos, HEIGHT - MARGIN, fill='#d2d2d2')
  38.  
  39. for i in range(1, (HEIGHT - MARGIN) // (10 * scale_factor) + 1):
  40. y_pos = i * 10 * scale_factor
  41. canvas.create_line(MARGIN, y_pos, WIDTH - MARGIN, y_pos, fill='#d2d2d2')
  42.  
  43.  
  44. # WIDTH, HEIGHT = 1000, 500
  45. WIDTH, HEIGHT = 800, 600
  46. MARGIN = 10
  47.  
  48. t0 = 0.0
  49. dt = 0.1
  50. g = 9.8
  51.  
  52. v0 = float(input('初速度(m/s)を入力してください: '))
  53. degrees = float(input('角度(度)を入力してください: '))
  54.  
  55. theta = degrees * math.pi / 180
  56. vx0 = v0 * math.cos(theta)
  57. vy0 = v0 * math.sin(theta)
  58. x0 = meter_to_pixel(400) # スケールファクターを適用
  59. y0 = meter_to_pixel(400) # スケールファクターを適用
  60. x1 = meter_to_pixel(250) # スケールファクターを適用
  61. y1 = meter_to_pixel(HEIGHT / 2) # スケールファクターを適用
  62. x = x0
  63. y = y0
  64. vy = vy0
  65. t = t0
  66.  
  67. # スケールファクターを設定
  68. scale_factor = 100 // 10 # 現実世界の10メートル(m)に対して100ピクセル(pixel)
  69.  
  70. geo_str = str(WIDTH+MARGIN*2) + 'x' + str(HEIGHT+MARGIN*2)
  71. window = tkinter.Tk()
  72. window.geometry(geo_str)
  73. window.title('moving')
  74.  
  75. canvas = tkinter.Canvas(window, width=WIDTH, height=HEIGHT, bg='white')
  76. canvas.place(x=MARGIN, y=MARGIN)
  77. canvas.create_oval(x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN, fill='red', outline='', tags='ball')
  78. canvas.create_oval(x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN, fill='gray', outline='', tags='ball1')
  79.  
  80. move()
  81. window.mainloop()
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: '.' expected
import tkinter
              ^
Main.java:2: error: '.' expected
import math
           ^
Main.java:4: error: ';' expected
def meter_to_pixel(meters):
   ^
Main.java:10: error: illegal character: '#'
    # ????????????
    ^
Main.java:24: error: illegal character: '#'
    # ?????????
    ^
Main.java:25: error: unclosed character literal
    canvas.coords('ball', x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN)
                  ^
Main.java:25: error: unclosed character literal
    canvas.coords('ball', x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN)
                       ^
Main.java:26: error: unclosed character literal
    canvas.coords('ball1', x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN)
                  ^
Main.java:26: error: unclosed character literal
    canvas.coords('ball1', x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN)
                        ^
Main.java:28: error: illegal character: '#'
    # ???????
    ^
Main.java:31: error: illegal character: '#'
    window.after(10, move) # 10??????move???????
                           ^
Main.java:34: error: illegal character: '#'
    # ???????
    ^
Main.java:37: error: unclosed character literal
        canvas.create_line(x_pos, MARGIN, x_pos, HEIGHT - MARGIN, fill='#d2d2d2')
                                                                       ^
Main.java:37: error: unclosed character literal
        canvas.create_line(x_pos, MARGIN, x_pos, HEIGHT - MARGIN, fill='#d2d2d2')
                                                                               ^
Main.java:41: error: unclosed character literal
        canvas.create_line(MARGIN, y_pos, WIDTH - MARGIN, y_pos, fill='#d2d2d2')
                                                                      ^
Main.java:41: error: unclosed character literal
        canvas.create_line(MARGIN, y_pos, WIDTH - MARGIN, y_pos, fill='#d2d2d2')
                                                                              ^
Main.java:44: error: illegal character: '#'
# WIDTH, HEIGHT = 1000, 500
^
Main.java:52: error: unclosed character literal
v0 = float(input('???(m/s)?????????: '))
                 ^
Main.java:52: error: unclosed character literal
v0 = float(input('???(m/s)?????????: '))
                                     ^
Main.java:53: error: unclosed character literal
degrees = float(input('??(?)?????????: '))
                      ^
Main.java:53: error: unclosed character literal
degrees = float(input('??(?)?????????: '))
                                       ^
Main.java:58: error: illegal character: '#'
x0 = meter_to_pixel(400) # ????????????
                         ^
Main.java:59: error: illegal character: '#'
y0 = meter_to_pixel(400) # ????????????
                         ^
Main.java:60: error: illegal character: '#'
x1 = meter_to_pixel(250) # ????????????
                         ^
Main.java:61: error: illegal character: '#'
y1 = meter_to_pixel(HEIGHT / 2) # ????????????
                                ^
Main.java:67: error: illegal character: '#'
# ????????????
^
Main.java:73: error: unclosed character literal
window.title('moving')
             ^
Main.java:73: error: unclosed character literal
window.title('moving')
                    ^
Main.java:75: error: unclosed character literal
canvas = tkinter.Canvas(window, width=WIDTH, height=HEIGHT, bg='white')
                                                               ^
Main.java:75: error: unclosed character literal
canvas = tkinter.Canvas(window, width=WIDTH, height=HEIGHT, bg='white')
                                                                     ^
Main.java:77: error: unclosed character literal
canvas.create_oval(x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN, fill='red', outline='', tags='ball')
                                                                                  ^
Main.java:77: error: unclosed character literal
canvas.create_oval(x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN, fill='red', outline='', tags='ball')
                                                                                      ^
Main.java:77: error: empty character literal
canvas.create_oval(x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN, fill='red', outline='', tags='ball')
                                                                                                 ^
Main.java:77: error: unclosed character literal
canvas.create_oval(x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN, fill='red', outline='', tags='ball')
                                                                                                          ^
Main.java:77: error: unclosed character literal
canvas.create_oval(x-MARGIN, (HEIGHT-y)-MARGIN, x+MARGIN, (HEIGHT-y)+MARGIN, fill='red', outline='', tags='ball')
                                                                                                               ^
Main.java:78: error: unclosed character literal
canvas.create_oval(x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN, fill='gray', outline='', tags='ball1')
                                                                                      ^
Main.java:78: error: unclosed character literal
canvas.create_oval(x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN, fill='gray', outline='', tags='ball1')
                                                                                           ^
Main.java:78: error: empty character literal
canvas.create_oval(x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN, fill='gray', outline='', tags='ball1')
                                                                                                      ^
Main.java:78: error: unclosed character literal
canvas.create_oval(x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN, fill='gray', outline='', tags='ball1')
                                                                                                               ^
Main.java:78: error: unclosed character literal
canvas.create_oval(x1-MARGIN, (HEIGHT-y1)-MARGIN, x1+MARGIN, (HEIGHT-y1)+MARGIN, fill='gray', outline='', tags='ball1')
                                                                                                                     ^
40 errors
stdout
Standard output is empty