I feel like everything I write sucks [closed]

  python
class Game():
def __init__(self):
    self.p1_move =[]
    self.p2_move = []
    self.turn = 1
    self.gameboard = ["-", "-", "-", "-", "-", "-", "-", "-", "-"]

def display_board(self, my_game):
    print(self.gameboard[0], self.gameboard[1], self.gameboard[2])
    print(self.gameboard[3], self.gameboard[4], self.gameboard[5])
    print(self.gameboard[6], self.gameboard[7], self.gameboard[8])

    if self.turn == 1:
        my_game.get_p1_move(my_game)
    elif self.turn == 2:
        my_game.get_p2_move(my_game)

def get_p1_move(self, my_game):
    self.p1_move = input("p1 Choose number 1 - 9 ")
    self.turn = 1

    try:
        self.p1_move = int(self.p1_move)
    except ValueError:
        print('use a number dumbass')




    for i in range(0, 10):


        if i == self.p1_move:
            print("should call check move")
            my_game.check_move(my_game)
            return None
    print('use a number 1-9')
    my_game.get_p1_move(my_game)

def get_p2_move(self, my_game):
    self.p2_move = input("p2 Choose number 1 - 9 ")
    self.turn = 2

    try:
        self.p2_move = int(self.p2_move)
    except ValueError:
        print('use a number dumbass')


    for i in range(0, 10):


        if i == self.p2_move:
            print("should call check move")
            my_game.check_move(my_game)
            return None
    print('use a number 1-9')
    my_game.get_p2_move(my_game)

def check_move(self, my_game):


   if self.turn == 1:
       if self.gameboard[self.p1_move - 1] == "-":
           self.gameboard[self.p1_move - 1] = "x"
           self.turn = 2
           my_game.check_win(my_game)
       else:
           print('Spot taken try again')
           my_game.get_p1_move(my_game)

   else:
       if self.gameboard[self.p2_move - 1] == "-":
           self.gameboard[self.p2_move - 1] = "o"
           self.turn = 1
           my_game.check_win(my_game)
       else:
           print('Spot taken try again')
           my_game.get_p2_move(my_game)

def check_win(self, my_game):
    my_game.display_board(my_game)

def main():

my_game = Game()
my_game.display_board(my_game)

main()

I feel like whenever I write code it just sucks and is unreadable but someone please let me know if this is considered "good code". Also if theres antything bad about it please let me know.

Source: Python Questions

LEAVE A COMMENT