Şimdi Ara

Pygame

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
5
Cevap
1
Favori
661
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Yaş 36, 10 yaşımda ilk atari marka bilgisayar ile tanışmamdan beri merkalıydım yazılım işlerine bir türlü nasip olmadı, bu yaşımda uğraşıyorum.

    belki çok ahmakça gelebilir ama aşağıda çakma Space Invader oyunum kaynak kodu var, uzman arkadaşlar sadeleştirebilirmi?

    google drive linki full oyun bedava :) LINK

    import random,math
    import pygame

    BLACK = (0, 0, 0)
    WHITE = (255, 255, 255)
    RED = (255, 0, 0)
    GREEN = ( 0, 255, 0)

    pygame.init()


    class SpaceShip(pygame.sprite.Sprite):
    def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.image.load("ship.png").convert()
    self.image.set_colorkey(WHITE)
    self.rect = self.image.get_rect()
    self.rect.x = 320
    self.rect.y = 420
    self.speed = 3
    self.ammo = 0

    def checkForKeyPress(self):
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
    if self.rect.x > 5:
    self.rect.x -= self.speed
    if keys[pygame.K_RIGHT]:
    if self.rect.x < 590:
    self.rect.x += self.speed
    if keys[pygame.K_SPACE]:
    pass
    """bullet = Bullet()
    bullet.rect.x = self.rect.centerx
    bullet.rect.y = (self.rect.top - 10)
    bullet.speed = 3


    if len(pbulletList)<7:
    pbulletList.add(bullet)
    allSprites.add(bullet)"""

    def update(self):
    self.checkForKeyPress()

    def shoot(self):

    bullet1 = Bullet()
    bullet1.rect.x = self.rect.left
    bullet1.rect.y = (self.rect.top - 10)
    bullet1.speed = 3
    bullet2 = Bullet()
    bullet2.rect.x = self.rect.right
    bullet2.rect.y = (self.rect.top - 10)
    bullet2.speed = 3
    if len(pbulletList) < 7:
    pbulletList.add(bullet1,bullet2)
    allSprites.add(bullet1,bullet2)

    class Alien(pygame.sprite.Sprite):
    def __init__(self, x, y,img):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.image.load("c%d.png" %img).convert()
    self.transColor = self.image.get_at((10, 10))
    self.image.set_colorkey(self.transColor)
    self.image = pygame.transform.scale(self.image, (50, 50))
    self.rect = self.image.get_rect()
    self.rect.x = x
    self.rect.y = y
    self.speed = 1
    self.way = 0
    self.timex = 0
    def update(self):

    if self.way < 0:
    self.speed = -1 * self.speed
    if self.way > 25:
    self.speed = -1 * self.speed
    self.way = 0
    self.way +=0.3
    self.rect.x += self.speed
    #self.fire()


    def fire(self):
    if random.randrange(10)==5:
    if self.timex > 40:
    bullet = Bullet()
    bullet.rect.x = self.rect.centerx
    bullet.rect.y = self.rect.bottom
    bullet.speed -= 1
    self.timex = 0
    ebulletList.add(bullet)
    allSprites.add(bullet)

    else:
    self.timex +=1

    class Brick(pygame.sprite.Sprite):
    def __init__(self,x,y):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface((4, 10))
    self.image.fill(GREEN)
    self.rect = self.image.get_rect()
    self.speed = -1
    self.rect.x = x
    self.rect.y = y


    class Bullet(pygame.sprite.Sprite):
    def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface((4, 10))
    self.image.fill(RED)
    self.rect = self.image.get_rect()
    self.speed = -1
    def update(self):
    self.rect.y -= self.speed
    if self.rect.y < 0 or self.rect.y > 480:
    self.kill()


    def is_collided_with(self, sprite):
    return self.rect.colliderect(sprite.rect)


    class ScoreBoard(pygame.sprite.Sprite):
    def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.score = 0
    self.font = pygame.font.SysFont("None", 25)

    def update(self):
    self.text = " score: %d" % (self.score)
    self.image = self.font.render(self.text, 1, (RED))
    self.rect = self.image.get_rect()
    pygame.display.set_caption("AlienTR: V0.1")
    screen = pygame.display.set_mode((640, 480))
    timex = 0

    allSprites = pygame.sprite.Group()
    ebulletList = pygame.sprite.Group()
    pbulletList = pygame.sprite.Group()
    alienList = pygame.sprite.Group()
    shipList = pygame.sprite.Group()
    brickList = pygame.sprite.Group()
    aliens = []
    def main():

    clock = pygame.time.Clock()
    gameRunning = True
    ship = SpaceShip()
    shipList.add(ship)
    bricks = []
    for x in range(50,160):
    for y in range(360,380):
    brick = Brick(x, y)
    bricks.append(brick)

    for x in range(250, 360):
    for y in range(360, 380):
    brick = Brick(x, y)
    bricks.append(brick)
    for x in range(450, 560):
    for y in range(360, 380):
    brick = Brick(x, y)
    bricks.append(brick)
    brickList.add(bricks)
    for i in range(1,6):

    alien1 = Alien(10,30,1)
    alien = Alien(i*100,30,i)
    aliens.append(alien)
    aliens.append(alien1)
    for i in range(1, 6):
    alien1 = Alien(10, 95, 1)
    alien = Alien(i * 100, 95, i)
    aliens.append(alien)
    aliens.append(alien1)
    for i in range(1, 6):
    alien1 = Alien(10, 160, 1)
    alien = Alien(i * 100, 160, i)
    aliens.append(alien)
    aliens.append(alien1)
    for i in range(1, 6):
    alien1 = Alien(10, 225, 1)
    alien = Alien(i * 100, 225, i)
    aliens.append(alien)
    aliens.append(alien1)

    timer = random.uniform(2, 6) # Random float between 2 and 6.
    dt = 4







    start_ticks=pygame.time.get_ticks()
    # alien = Alien(30,30)
    score = ScoreBoard()
    allSprites.add(ship, aliens, score,bricks)
    alienList.add(aliens)
    while gameRunning:
    seconds=(pygame.time.get_ticks()-start_ticks)/1000
    for event in pygame.event.get(): # User did something
    if event.type == pygame.QUIT: # If user clicked close
    gameRunning = False # Flag that we are done so we exit this loop
    elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_SPACE:
    ship.shoot()

    """timer -= dt
    if timer < 3: # Ready to fire.
    random_alien = random.choice(aliens)
    random_alien.fire()

    timer = random.uniform(2, 6) # Reset the timer.

    # Collision detection and drawing omitted.

    # clock.tick returns the time that has passed since the last frame.
    #dt = clock.tick(60) / 1000
    print timer
    """
    """for bullet in ebulletList:
    if bullet.rect.y > 480:
    ebulletList.remove(bullet)
    allSprites.remove(bullet)
    print bullet.rect.y"""
    """for bullet in bulletList:
    hit = pygame.sprite.spritecollide(bullet, alienList, True)
    if hit:
    score.score = score.score + 1
    print hit[0]
    alienList.remove(hit)
    bulletList.remove(bullet)
    allSprites.remove(bullet)

    aliens.pop(1)

    hit2 = pygame.sprite.spritecollide(bullet,shipList,True)"""
    hit = pygame.sprite.groupcollide(pbulletList, alienList, True, True)
    if hit:
    score.score = score.score + 1
    hit2 = pygame.sprite.groupcollide(pbulletList,brickList,True,True)
    hit3 = pygame.sprite.groupcollide(ebulletList,brickList,True,True)
    """for bullet in pbulletList:

    hit_list = pygame.sprite.spritecollide(bullet,alienList,True)

    for hit in hit_list:
    alienList.remove(hit)
    allSprites.remove(hit)"""
    for alien in alienList:
    alien.fire()
    """for bullets in pbulletList:
    for enemy in alienList:
    if(pygame.sprite.spritecollide(bullets,allSprites,False)):
    alienList.remove(enemy)
    allSprites.remove(enemy)"""
    """for bullet in ebulletList:
    hit = pygame.sprite.spritecollide(bullet,ebulletList,False)
    if len(hit) > 0:
    for block in hit:
    ebulletList.remove(bullet)
    allSprites.remove(bullet)
    #ebulletList.remove(bullet)
    #allSprites.remove(bullet)
    """
    ebulletList.update()
    pbulletList.update()
    alienList.update()
    shipList.update()
    allSprites.update()
    screen.fill(BLACK)
    clock.tick(30)
    allSprites.draw(screen)
    # bulletList.update()
    # bulletList.draw(screen)
    pygame.display.flip()
    #print len(ebulletList)
    print len(pbulletList)


    if __name__ == "__main__":
    main()
    pygame.quit()

    Pygame



    < Bu mesaj bu kişi tarafından değiştirildi wozniak -- 14 Şubat 2018; 22:13:1 >







  • Kodlar bir şablon üzerinden oluşturulmuş gibi duruyor veya öyle değilse bile coğu başka yerlerden kopyalanıp yapıştırılmış gibi duruyor. Python'da ben de 400 satırlık bir uygulama yazdım, İngilizcem iyi olmasına ragmen deişken ve fonksiyon isimlerinde hep Türkçe kullandım burada ise tüm değişken ve sınıf isimleri İngilizce.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: revivo72

    Kodlar bir şablon üzerinden oluşturulmuş gibi duruyor veya öyle değilse bile coğu başka yerlerden kopyalanıp yapıştırılmış gibi duruyor. Python'da ben de 400 satırlık bir uygulama yazdım, İngilizcem iyi olmasına ragmen deişken ve fonksiyon isimlerinde hep Türkçe kullandım burada ise tüm değişken ve sınıf isimleri İngilizce.

    Evet haklısın, bütün kaynaklar ingilizce amazondan kitap aldım "Game Programming Express Line" ondan çalıştığım için temel onun yazdığı kod üzerine, daha sonra github, stackoverflow ve pygame.org dan örnekler üzerinden diğer bilmediklerimi, algoritmasını geliştiremediklerimi aldım. Tüm değişken ve sınıf isimlerinin ingilizce olmasının nedeni stack da soru sormam gerektiği için ve okunabilirlik için.

    Şimdi aşağılamanız bitti ise uzman bir yazılımcı olarak "arkadaşım malmısın o for döngünüsü 4 defa alt alta yazmak yerine tek sefer şöyle yazman gerek" gibi destek olur musun.




  • quote:

    Orijinalden alıntı: wozniak


    quote:

    Orijinalden alıntı: revivo72

    Kodlar bir şablon üzerinden oluşturulmuş gibi duruyor veya öyle değilse bile coğu başka yerlerden kopyalanıp yapıştırılmış gibi duruyor. Python'da ben de 400 satırlık bir uygulama yazdım, İngilizcem iyi olmasına ragmen deişken ve fonksiyon isimlerinde hep Türkçe kullandım burada ise tüm değişken ve sınıf isimleri İngilizce.

    Evet haklısın, bütün kaynaklar ingilizce amazondan kitap aldım "Game Programming Express Line" ondan çalıştığım için temel onun yazdığı kod üzerine, daha sonra github, stackoverflow ve pygame.org dan örnekler üzerinden diğer bilmediklerimi, algoritmasını geliştiremediklerimi aldım. Tüm değişken ve sınıf isimlerinin ingilizce olmasının nedeni stack da soru sormam gerektiği için ve okunabilirlik için.

    Şimdi aşağılamanız bitti ise uzman bir yazılımcı olarak "arkadaşım malmısın o for döngünüsü 4 defa alt alta yazmak yerine tek sefer şöyle yazman gerek" gibi destek olur musun.



    Yazdım deyince oturup kendin yazdın anlamı çıkar. Ancak tüm kod alıntı. Alt alta belki 20 indent ile kodun görüntüsü. Sadeleştirme yapardım ancak benim için aşağılama yapıyor demişsin o yüzden o artık ihtimal dışı.

    Pygame

    < Bu ileti mini sürüm kullanılarak atıldı >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.