2017-07-04 10 views
0

ゲームコードはクラスCookieとShopを扱っています。 {Cookie Number} Cookieというテキストボックスが表示されるようにするにはどうすればよいですか? event.clickにcookie +1と表示されるコマンドはありますか?クッキースプライトをクリックするたびに1を加算するスコアテキストリストを追加するにはどうすればよいですか? (Python)

game_loopの中には、単に「クッキーという言葉が最後にあるクッキー番号です」という単純なテキストボックスがあります。リストを作成する必要があると思いますが、その方法はわかりません。 {}でしょう?また、あなたの助けのためのみんなに感謝します。

import pygame as pg 
import os 

WIDTH = 1024 
HEIGHT = 768 

CLOCK = pg.time.Clock() 
FPS = 60 

WHITE = (255, 255, 255) 
BROWN = (153, 51, 51) 
DARKGRAY = (40, 40, 40) 
BGCOLOR = DARKGRAY 

game_folder = os.path.dirname(__file__) 
img_folder = os.path.join(game_folder, "img") 

screen = pg.display.set_mode((WIDTH, HEIGHT)) 
pg.display.set_caption("Cookie Clicker") 

class Cookie(pg.sprite.Sprite): 

    def __init__(self): 
     pg.sprite.Sprite.__init__(self) 
     self.image = pg.image.load(os.path.join(img_folder, "2.png")).convert() 
     self.rect = self.image.get_rect() 
     self.rect.center = ((WIDTH - 670, HEIGHT/2)) 

cookie = Cookie() 

class Shop(pg.sprite.Sprite): 

    def __init__(self): 
     pg.sprite.Sprite.__init__(self) 
     self.image = pg.Surface((300, 768)) 
     self.image.fill(WHITE) 
     self.rect = self.image.get_rect() 
     self.rect.center = ((WIDTH - 150, HEIGHT/2)) 


def game_loop(): 
    pg.init() 
    pg.font.init() 

    my_font = pg.font.SysFont("Comic Sans MS", 30) 

    text_surface = my_font.render('SOME NUMBER - Cookies', False, (0, 255, 0)) 

    running = True 
    while running: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       running = False 

     all_sprites = pg.sprite.Group() 
     all_sprites.add(cookie, shop) 
     all_sprites.update() 

     screen.fill(BGCOLOR) 
     all_sprites.draw(screen) 
     screen.blit(text_surface, (175, 100)) 
     pg.display.flip() 

     CLOCK.tick(FPS) 

    pg.quit() 


game_loop() 
+0

あなただけのクリック数を記録し、その数を表示しようとしている、またはあなたがクリックするたびに新しいクッキーのスプライトを生成し、Cookieの合計数を表示したいですか? – DinosauRuss

答えて

0

をイベントループでは、ユーザーがマウス・ボタンを押したかどうかを確認、その後、チェックするとevent.poscookie.rect衝突(またはpg.mouse.get_pos()を使用)、および場合衝突し、スコア変数をインクリメントします:

elif event.type == pg.MOUSEBUTTONDOWN: 
    # Use the collidepoint method of this `pygame.Rect`. 
    if cookie.rect.collidepoint(event.pos): 
     score += 1 
     print(score) 

テキストを画面にblitするには、score.formatメソッドの助けを借りて文字列に入力する必要があります。'{} Cookies'.format(score)。それをmy_font.renderに渡し、返された表面をblitします。

text_surface = my_font.render('{} Cookies'.format(score), True, BROWN) 
screen.blit(text_surface, (30, 30)) 

また、あなたはwhileループの内側にall_spritesグループを作成し、埋めるべきではありません。ここでは、更新game_loop機能があります:

def game_loop(): 
    pg.init() 

    my_font = pg.font.SysFont("Comic Sans MS", 30) 
    cookie = Cookie() 
    shop = Shop() 
    all_sprites = pg.sprite.Group() 
    all_sprites.add(cookie, shop) 
    score = 0 

    running = True 
    while running: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       running = False 
      elif event.type == pg.MOUSEBUTTONDOWN: 
       if cookie.rect.collidepoint(event.pos): 
        score += 1 
        print(score) 

     all_sprites.update() 

     screen.fill(BGCOLOR) 
     all_sprites.draw(screen) 
     screen.blit(text_surface, (175, 100)) 
     text_surface = my_font.render('{} Cookies'.format(score), True, BROWN) 
     screen.blit(text_surface, (30, 30)) 
     pg.display.flip() 

     CLOCK.tick(FPS) 

    pg.quit() 
    sys.exit() # import sys at the top of the file. 
関連する問題