Python terminalde space Invader benzeri bir oyun oluşturma

Python üzerinde basit bir space invader oyunu yazmam gerek nasıl yapabilirim kaynak vs atar mısınız nasıl yapabileceğimi bilmiyorum. Oyun terminal içinde olacak bu yüzden kaynak bulamadım.


Bu tarzda bir oyun.

Kaynak bulamaman normal. Python temelleri ile yapılabilecek bir oyun.
Frame şeklinde Action alıyorsun. Dizin şeklinde görünsün oyun.

dizi = [

    ["0","0","0","0"],

    ["0","0","0","0"],

    [" "," "," "," "],

    [" "," "," "," "],

    [" "," "," "," "],

    [" "," ","P"," "],   

        ]

Her işlem yapıldığında dizi içerisinde yer değiştiriceksin. Mesela ateş ettim diyelim. P üstüne mermi koyacaksın. Mermi vurdu diyelim bakıcaksın bak mermi hedefin olduğu dizine mi geldi?

Not : Yapıcam hoşuma gitti. Atarım kodu buraya

Zihinsel Sorun kodu ektedir.(gerçekten berbat durumda kod düzenlemek isteyen düzenlesin ben yaparken gözüm kanadı yorgunluktan). :sleeping: Bazı hatalar mevcut kod içinde. Sağa basınca sola gidiyor falan onları ayarlarsınız :smiley:

import os

os.system('cls')

def RightMove(dizi):

    dizi = Bullet_Go(dizi)

    y,x = Find_Item(dizi,'P')

    if(y == 5 and x == 0):

        WarningPr()

        return dizi

    else:

        dizi[y][x] = " "

        dizi[y][x-1] = "P"

        return dizi

    

def LeftMove(dizi):

    dizi = Bullet_Go(dizi)

    y,x = Find_Item(dizi,'P')

    if(y == 5 and x == 7):

        WarningPr()

        return dizi

    else:

        dizi[y][x] = " "

        dizi[y][x+1] = "P"

        return dizi

def Shoot(dizi):

    dizi = Bullet_Go(dizi)

    y,x = Find_Item(dizi,'P')

    dizi[y-1][x] = "I"

    return dizi

def Stand(dizi):

    return Bullet_Go(dizi)

def Find_Item(dizi,Item_N):

    y = -1

    for list in dizi:

        y = y + 1

        x = -1

        for z in list:

            x = x +1

            if z == Item_N:

                return y,x

    

def Bullet_Go(dizi):

    y = -1

    for list in dizi:

        y = y + 1

        x = -1

        for z in list:

            x = x +1

            

            if z == 'I':

                if dizi[y-1][x] == '0':

                    dizi[y-1][x] = ' '

                    dizi[y][x] = ' '

                elif dizi[0][x] == 'I':

                    dizi[y][x] = ' '

                else:

                    dizi[y][x] = " "

                    dizi[y-1][x]= "I"

    return dizi            

def Statement(metin,dizi):

    if metin == 'D':RightMove(dizi)

    elif metin == 'A':LeftMove(dizi)

    elif metin =='L':Shoot(dizi)

    elif metin =='S':Stand(dizi)

    else: print("Doğru basarmısın karşim")

def WarningPr():

    print("\033[1;31;40m  \n")

    print("Sondasın")

    print("\033[1;37;40m\n")

def Yazdır(dizi):

    print("\033[1;32;40m\n")

    print("-"*20)

    for list in dizi :

        metin =""

        for x in list:

            metin = metin+x

        print(metin)

    print("-"*20)

    print("\033[1;37;40m\n")

def win(dizi):

    y = -1

    for list in dizi:

        y = y + 1

        x = -1

        for z in list:

            x = x +1

            if z == '0':

                return False

    return True

dizi = [

    ["0","0","0","0","0","0","0","0"],

    ["0","0","0","0","0","0","0","0"],

    [" "," "," "," "," "," "," "," "],

    [" "," "," "," "," "," "," "," "],

    [" "," "," "," "," "," "," "," "],

    [" "," ","P"," "," "," "," "," "]]

while True:

    Yazdır(dizi)

    if win(dizi):

        print("/"*10)

        print("YOU WIN")

        print("/"*10)

        break

    metin = input("\n"*2+"Sağa gitmek için 'D' \nSola gitmek için 'A' \nAteş etmek için L\n Hareketsiz kalmak için S tuşlayınız => ")

    Statement(metin.upper(),dizi)

    if(metin.upper() == "Q"):

        break

iyi çalışmalar

2 Beğeni