Saya relatif baru dalam hal python, dan tahu cara mengonversi string menjadi bilangan bulat. Namun, untuk beberapa alasan saya tidak dapat menggambar garis dari pygame. Sebelum mengonversi kode menjadi integer, dikatakan bahwa saya memiliki peringatan penghentian dan membutuhkan bilangan bulat alih-alih float yang saya miliki. Saya melakukan apa yang diperintahkan, tetapi sekarang saya mendapatkan kesalahan yang mengatakan int() tidak dapat mengonversi non-string dengan basis eksplisit.

Sebelum konversi:

def draw_board(board):
      pygame.draw.line(screen,WHITE, (WIDTH/3,0),(WIDTH/3,HEIGHT),5)
      pygame.draw.line(screen,WHITE,(WIDTH/1.5,0),(WIDTH/1.5,HEIGHT),5)
      pygame.draw.line(screen,WHITE,(0,HEIGHT/1.5),(WIDTH,HEIGHT/1.5),5)
      pygame.draw.line(screen,WHITE,(0,HEIGHT/3),(WIDTH,HEIGHT/3),5)

Setelah konversi:

def draw_board(board):
      pygame.draw.line(screen,WHITE, (int (WIDTH/3,0), int (WIDTH/3,HEIGHT)),5)
      pygame.draw.line(screen,WHITE,(int (WIDTH/1.5,0), int (WIDTH/1.5,HEIGHT)),5)
      pygame.draw.line(screen,WHITE,(int (0,HEIGHT/1.5), int (WIDTH,HEIGHT/1.5)),5)
      pygame.draw.line(screen,WHITE,(int (0,HEIGHT/3),int (WIDTH,HEIGHT/3)),5)
1
vivaan kashyap 18 Juni 2020, 01:24

1 menjawab

Jawaban Terbaik
pygame.draw.line(screen,WHITE, (int (WIDTH/3,0), int (WIDTH/3,HEIGHT)),5)

Ada dua masalah disini.

(int (WIDTH/3,0), int (WIDTH/3,HEIGHT))

Ini menggabungkan dua argumen Anda menjadi Tuple - yang saya duga bukan yang Anda inginkan.

int (WIDTH/3,0)

Ini meneruskan dua argumen ke fungsi int - yang juga bukan yang Anda inginkan.

Untuk pembagian antara dua bilangan bulat, Anda mungkin/harus memiliki opsi untuk menggunakan operator "pembagian lantai" mis.

WIDTH // 3

Jika tidak, Anda akan menginginkan sesuatu yang lebih seperti:

pygame.draw.line(screen,WHITE,(0, int(HEIGHT/1.5)), (WIDTH, int(HEIGHT/1.5)),5)
2
Tushar Kesarwani 18 Juni 2020, 19:33