Pythonは実店舗のゲームを実装しています

この記事の例では、参考のために実物大のゲームを実現するためのPythonの特定のコードを共有しています。具体的な内容は次のとおりです。

# インポートモジュール
import pygame
from pygame.locals import*import sys,random,time,math
classGameWindow(object):'''ゲームウィンドウクラスを作成する'''
def __init__(self,*args,**kw): 
self.window_length =600
self.window_wide =500
# ゲームウィンドウを描画し、ウィンドウサイズを設定します
self.game_window = pygame.display.set_mode((self.window_length,self.window_wide))
# ゲームウィンドウのタイトルを設定する
pygame.display.set_caption("CatchBallGame")
# ゲームウィンドウの背景色パラメータを定義します
self.window_color =(135,206,250)
def backgroud(self):
# ゲームウィンドウの背景色を描画します
self.game_window.fill(self.window_color)classBall(object):'''ボールを作成する'''
def __init__(self,*args,**kw):
# ボールの半径、色、移動速度のパラメータを設定します
self.ball_color =(255,215,0) 
self.move_x =1
self.move_y =1
self.radius =10
def ballready(self):
# ボールの初期位置を設定し、
self.ball_x = self.mouse_x
self.ball_y = self.window_wide-self.rect_wide-self.radius
# ボールを引き、バウンストリガー条件を設定します
pygame.draw.circle(self.game_window,self.ball_color,(self.ball_x,self.ball_y),self.radius)
def ballmove(self):
# ボールを引き、バウンストリガー条件を設定します
pygame.draw.circle(self.game_window,self.ball_color,(self.ball_x,self.ball_y),self.radius) 
self.ball_x += self.move_x
self.ball_y -= self.move_y
# 衝突検出機能を呼び出す
self.ball_window()
self.ball_rect()
# ボールの速度は、ボールを受け取る5回ごとに2倍になります
if self.distance < self.radius:
self.frequency +=1if self.frequency ==5:
self.frequency =0
self.move_x += self.move_x
self.move_y += self.move_y
self.point += self.point
# ゲームの失敗条件を設定する
if self.ball_y   520:
self.gameover = self.over_font.render("Game Over",False,(0,0,0))
self.game_window.blit(self.gameover,(100,130))
self.over_sign =1classRect(object):'''ラケットクラスを作成する'''
def __init__(self,*args,**kw):
# ラケットの色パラメータを設定します
self.rect_color =(255,0,0)
self.rect_length =100
self.rect_wide =10
def rectmove(self):
# マウスの位置パラメータを取得する
self.mouse_x,self.mouse_y = pygame.mouse.get_pos()
# ラケットを描き、水平方向の境界を定義します
if self.mouse_x  = self.window_length-self.rect_length//2:
self.mouse_x = self.window_length-self.rect_length//2if self.mouse_x <= self.rect_length//2:
self.mouse_x = self.rect_length//2
pygame.draw.rect(self.game_window,self.rect_color,((self.mouse_x-self.rect_length//2),(self.window_wide-self.rect_wide),self.rect_length,self.rect_wide))classBrick(object):
def __init__(self,*args,**kw):
# レンガの色パラメータを設定する
self.brick_color =(139,126,102)
self.brick_list =[[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]]
self.brick_length =80
self.brick_wide =20
def brickarrange(self):for i inrange(5):for j inrange(6):
self.brick_x = j*(self.brick_length+24)
self.brick_y = i*(self.brick_wide+20)+40if self.brick_list[i][j]==1:
# レンガを描く
pygame.draw.rect(self.game_window,self.brick_color,(self.brick_x,self.brick_y,self.brick_length,self.brick_wide)) 
# 衝突検出機能を呼び出す
self.ball_brick()if self.distanceb < self.radius:
self.brick_list[i][j]=0
self.score += self.point
# ゲームの勝利条件を設定する
if self.brick_list ==[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]]:
self.win = self.win_font.render("You Win",False,(0,0,0))
self.game_window.blit(self.win,(100,130))
self.win_sign =1classScore(object):'''スコアクラスを作成する'''
def __init__(self,*args,**kw): 
# 初期スコアを設定する
self.score =0
# フラクションフォントを設定する
self.score_font = pygame.font.SysFont('arial',20)
# 初期ボーナスポイントを設定する
self.point =1
# キャッチの初期数を設定します
self.frequency =0
def countscore(self):
# プレーヤーのスコアをプロットする
my_score = self.score_font.render(str(self.score),False,(255,255,255))
self.game_window.blit(my_score,(555,15))classGameOver(object):'''クラスでゲームを作成する'''
def __init__(self,*args,**kw):
# ゲームオーバーフォントを設定する
self.over_font = pygame.font.SysFont('arial',80)
# GameOverロゴを定義する
self.over_sign =0classWin(object):'''ゲーム勝利クラスを作成する'''
def __init__(self,*args,**kw):
# Set YouWinフォント
self.win_font = pygame.font.SysFont('arial',80)
# Winロゴを定義する
self.win_sign =0classCollision(object):'''衝突検出クラス'''
# ボールとウィンドウフレーム間の衝突検出
def ball_window(self):if self.ball_x <= self.radius or self.ball_x  =(self.window_length-self.radius):
self.move_x =-self.move_x
if self.ball_y <= self.radius:
self.move_y =-self.move_y
# ボールとラケットの衝突検出
def ball_rect(self):
# 衝突マーカーを定義する
self.collision_sign_x =0
self.collision_sign_y =0if self.ball_x <(self.mouse_x-self.rect_length//2):
self.closestpoint_x = self.mouse_x-self.rect_length//2
self.collision_sign_x =1
elif self.ball_x(self.mouse_x+self.rect_length//2):
self.closestpoint_x = self.mouse_x+self.rect_length//2
self.collision_sign_x =2else:
self.closestpoint_x = self.ball_x
self.collision_sign_x =3if self.ball_y <(self.window_wide-self.rect_wide):
self.closestpoint_y =(self.window_wide-self.rect_wide)
self.collision_sign_y =1
elif self.ball_y   self.window_wide:
self.closestpoint_y = self.window_wide
self.collision_sign_y =2else:
self.closestpoint_y = self.ball_y
self.collision_sign_y =3
# ラケットの円の中心に最も近い点と円の中心との間の距離を定義します
self.distance = math.sqrt(math.pow(self.closestpoint_x-self.ball_x,2)+math.pow(self.closestpoint_y-self.ball_y,2))
# 左、上中央、右上の3つの状況でのラケット上のボールの衝突検出
if self.distance < self.radius and self.collision_sign_y ==1and(self.collision_sign_x ==1 or self.collision_sign_x ==2):if self.collision_sign_x ==1 and self.move_x   0:
self.move_x =- self.move_x
self.move_y =- self.move_y
if self.collision_sign_x ==1 and self.move_x <0:
self.move_y =- self.move_y
if self.collision_sign_x ==2 and self.move_x <0:
self.move_x =- self.move_x
self.move_y =- self.move_y
if self.collision_sign_x ==2 and self.move_x   0:
self.move_y =- self.move_y
if self.distance < self.radius and self.collision_sign_y ==1 and self.collision_sign_x ==3:
self.move_y =- self.move_y
# ラケットの左側と右側の中央でのボールの衝突検出
if self.distance < self.radius and self.collision_sign_y ==3:
self.move_x =- self.move_x
# ボールとレンガの衝突検出
def ball_brick(self):
# 衝突マーカーを定義する
self.collision_sign_bx =0
self.collision_sign_by =0if self.ball_x < self.brick_x:
self.closestpoint_bx = self.brick_x
self.collision_sign_bx =1
elif self.ball_x   self.brick_x+self.brick_length:
self.closestpoint_bx = self.brick_x+self.brick_length
self.collision_sign_bx =2else:
self.closestpoint_bx = self.ball_x
self.collision_sign_bx =3if self.ball_y < self.brick_y:
self.closestpoint_by = self.brick_y
self.collision_sign_by =1
elif self.ball_y   self.brick_y+self.brick_wide:
self.closestpoint_by = self.brick_y+self.brick_wide
self.collision_sign_by =2else:
self.closestpoint_by = self.ball_y
self.collision_sign_by =3
# レンガの最も近い点から円の中心までの距離と円の中心との間の距離を定義します
self.distanceb = math.sqrt(math.pow(self.closestpoint_bx-self.ball_x,2)+math.pow(self.closestpoint_by-self.ball_y,2))
# 左、上中央、右上の3つの状況でのレンガ上のボールの衝突検出
if self.distanceb < self.radius and self.collision_sign_by ==1and(self.collision_sign_bx ==1 or self.collision_sign_bx ==2):if self.collision_sign_bx ==1 and self.move_x   0:
self.move_x =- self.move_x
self.move_y =- self.move_y
if self.collision_sign_bx ==1 and self.move_x <0:
self.move_y =- self.move_y
if self.collision_sign_bx ==2 and self.move_x <0:
self.move_x =- self.move_x
self.move_y =- self.move_y
if self.collision_sign_bx ==2 and self.move_x   0:
self.move_y =- self.move_y
if self.distanceb < self.radius and self.collision_sign_by ==1 and self.collision_sign_bx ==3:
self.move_y =- self.move_y
# レンガの左下、中央下、右下のボールの衝突検出
if self.distanceb < self.radius and self.collision_sign_by ==2and(self.collision_sign_bx ==1 or self.collision_sign_bx ==2):if self.collision_sign_bx ==1 and self.move_x   0:
self.move_x =- self.move_x
self.move_y =- self.move_y
if self.collision_sign_bx ==1 and self.move_x <0:
self.move_y =- self.move_y
if self.collision_sign_bx ==2 and self.move_x <0:
self.move_x =- self.move_x
self.move_y =- self.move_y
if self.collision_sign_bx ==2 and self.move_x   0:
self.move_y =- self.move_y
if self.distanceb < self.radius and self.collision_sign_by ==2 and self.collision_sign_bx ==3:
self.move_y =- self.move_y
# レンガの左側と右側の中央でのボールの衝突検出
if self.distanceb < self.radius and self.collision_sign_by ==3:
self.move_x =- self.move_x
classMain(GameWindow,Rect,Ball,Brick,Collision,Score,Win,GameOver):'''メインプログラムクラスを作成する'''
def __init__(self,*args,**kw):super(Main,self).__init__(*args,**kw)super(GameWindow,self).__init__(*args,**kw)super(Rect,self).__init__(*args,**kw)super(Ball,self).__init__(*args,**kw)super(Brick,self).__init__(*args,**kw)super(Collision,self).__init__(*args,**kw)super(Score,self).__init__(*args,**kw)super(Win,self).__init__(*args,**kw)
# ゲーム開始フラグを定義する
start_sign =0while True: 
self.backgroud()
self.rectmove()
self.countscore()if self.over_sign ==1 or self.win_sign ==1:break
# ゲームウィンドウの状態を取得する
for event in pygame.event.get():if event.type == pygame.QUIT:
sys.exit()if event.type == MOUSEBUTTONDOWN:
pressed_array = pygame.mouse.get_pressed()if pressed_array[0]:
start_sign =1if start_sign ==0:
self.ballready()else:
self.ballmove()
self.brickarrange()
# ゲームウィンドウを更新する
pygame.display.update()
# ゲームウィンドウの更新速度を制御する
time.sleep(0.010)if __name__ =='__main__':
pygame.init()
pygame.font.init()
catchball =Main()

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonは実店舗のゲームを実装しています
Pythonは単にスネークゲームを実装します
Pythonはtic-tac-toeゲームを実装しています
Pythonは推測ゲームを実装しています
Pythonはスネークゲームのソースコードを実装しています
pythonはゲームという言葉を推測します
Pythonは推測ゲームを実装しています
Pythonはデジタル爆弾ゲームを実装しています
Pythonは推測ゲームを実現します
Pythonは単純なtic-tac-toeゲームを実装しています
Pythonがメール機能を実装する方法
Python3はシングルトンデザインパターンを実装しています
Pythonは最も急な降下方法を実装します
Pythonはデジタル爆弾ゲームプログラムを実装しています
Pythonは航空機戦争プロジェクトを実装します
PythonはTowerofHanoiゲームを解決します
Pythonは分数シーケンスの合計を実装します
Pythonの基本的な実際の戦闘-年齢ゲームを推測する
pythonは勾配メソッドを実装しますpython最速の降下メソッド
python3は単に結合された設計パターンを実装します
PythonはDoudizhuでカードのシャッフルを実装します
Pythonは釣りマスターのゲーム実装を書きます
パイソンを使って航空機戦争ゲームを実現する
Pythonはスーパーマリオを実装しています
Pythonはマンマシンゴバンを実装します
Pythonは画像スティッチングを実装しています
Pythonはスキャンツールを実装しています
Pythonはしきい値回帰を実装します
Pythonは地雷除去ゲームを実装しています
Pythonは電子辞書を実装しています
Pythonでタンクバトルゲームを実現|ドライポスト
Pythonでタンクバトルゲームを実現|ドライポスト
Pythonは単純なタンクバトルを実装します
Python3は飛行機戦争ゲームを実現します
Python(7)の基盤を統合する
Pythonはudpチャットウィンドウを実装します
Python(6)の基盤を統合する
Ubuntuは最新のPython3をインストールします。
Pythonは駐車場管理システムを実現
PythonはTCPファイル転送を実装します
Python拡張機能の違い
Pythonnumpyはローリングケースを実装します
OpenCVPythonはパズルゲームを実装しています
Pythonはパスワード強度検証を実装します
Pythonは車の管理システムを実装しています
Pythonはコードブロックフォールディングを実装します
Pythonはパノラマ画像スティッチングを実装しています
PythonはSMTPメール送信を実装します
Pythonは多次元配列ソートを実装しています
PythonがFTP機能を実装する方法
Pythonは平均シフトクラスタリングアルゴリズムを実装しています
Pythonは検証コード認識を実装します
Pythonは勾配降下法を実装しています
Pythonはテキストバージョンのminesweeperを実装しています
Pythonの基盤を統合する(3)
Pythonは画像スティッチング機能を実装しています
pythonでのwheelの使用法
Pythonは学生のパフォーマンス評価システムを実装しています
pythonはどのように環境を変えますか
Pythonは中国語の4つの車輪を処理します
Pythonは為替レート変換操作を実装します