今日最も人気のあることは、Pythonで釣りの達人の効果を書くことです。言うまでもなく、明るいコード~~~
# coding:utf-8
# インポートモジュール
import pygame,sys,time,random
from pygame.locals import*
# pygame環境を初期化します
pygame.init()
# 800の長さと幅を作成します/480ウィンドウ
canvas = pygame.display.set_mode((800,480))
canvas.fill((255,255,255))
# ウィンドウタイトルを設定する
pygame.display.set_caption('釣りの専門家')
# 画像を読み込む
bg = pygame.image.load("./images/bg.jpg")
fish1 = pygame.image.load("./images/fish1_0.png")
fish2 = pygame.image.load("./images/fish2_0.png")
fish3 = pygame.image.load("./images/fish3_0.png")
fish4 = pygame.image.load("./images/fish4_0.png")
fish5 = pygame.image.load("./images/fish5_0.png")
fish6 = pygame.image.load("./images/fish6_0.png")
fish7 = pygame.image.load("./images/fish7_0.png")
fish8 = pygame.image.load("./images/fish8_0.png")
fish9 = pygame.image.load("./images/fish9_0.png")
fish10 = pygame.image.load("./images/fish10_0.png")
fish11 = pygame.image.load("./images/fish11_0.png")
net = pygame.image.load("./images/net.png")
gameover = pygame.image.load("./images/gameover.jpg")
# イベントリスナー関数を定義する
def handleEvent():for event in pygame.event.get():if event.type == QUIT:
pygame.quit()
sys.exit()
# マウスの動きのイベントを追加し、マウスにネットの動きを制御させます
if event.type == MOUSEMOTION:
Game.net.x = event.pos[0]- Game.net.width/2
Game.net.y = event.pos[1]- Game.net.height/2
# 時間間隔判定機能を定義する
def isActionTime(lastTime,interval):if lastTime ==0:return True
currentTime = time.time()return currentTime - lastTime = interval
# 魚を定義する
classFish():
def __init__(self,width,height,y,img):
self.width = width
self.height = height
self.x =800- self.width
self.y = y
self.img = img
def paint(self):
canvas.blit(self.img,(self.x,self.y))
def step(self):
self.x -=10
# ネットクラスを定義する
classNet():
def __init__(self,x,y):
self.x = x
self.y = y
self.width =160
self.height =160
self.img = net
def paint(self):
canvas.blit(self.img,(self.x,self.y))
# 範囲外関数を定義する
def outOfBounds(self):if self.x <=0:
self.x =0
elif self.x =800- self.width:
self.x =800- self.width
elif self.y <=0:
self.y =0
elif self.y =480- self.height:
self.y =480- self.height
# 衝突関数を定義する
def hit(self,c):return c.x self.x - c.width and c.x < self.x + self.width and c.y self.y - c.height and c.y < self.y + self.height
# ゲームデータを保存するためのクラスを定義します
classGame():
# ゲームの状態
state ='RUNNING'
# 魚のリスト
fish =[]
# ネットオブジェクト
net =Net(100,100)
# 分数
score =0
# 時間
t =60
n =1
# 前回
lastTime =0
# 時間間隔
interval =0.5
# すべての魚の幅と高さ
fish_pos =[[22,13],[50,48],[55,55],[73,73],[104,80],[60,60],[93,93],[94,81],[99,103],[180,140],[320,206],[100,96]]
# 魚を生産する機能を定義する
def conEnter():if not isActionTime(Game.lastTime,Game.interval):return
Game.lastTime = time.time()
r = random.randint(1,11)if Game.t <=60:
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480- Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
elif Game.t <=30:
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480- Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480- Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
elif Game.t <=10:
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480- Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480- Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480- Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
# 描画コンポーネント関数を定義する
def conPaint():
canvas.blit(bg,(0,0))
Game.net.paint()showScore()showTime()for fish in Game.fish:
fish.paint()
# コンポーネント移動関数を定義する
def conStep():
Game.net.outOfBounds()for fish in Game.fish:
fish.step()
# 衝突検出機能を定義する
def checkHit():for fish in Game.fish:if Game.net.hit(fish) and len(Game.fish)!=0:
Game.fish.remove(fish)
Game.score +=1
# プロットスコア関数を定義する
def showScore():
TextFont = pygame.font.SysFont('SimHei',40)
TextScore = TextFont.render('スコア:'+str(Game.score),True,(255,255,255))
canvas.blit(TextScore,(20,20))
# 描画時間関数を定義する
def showTime():
TextFont = pygame.font.SysFont('SimHei',40)
TextScore = TextFont.render('残り時間:'+str(Game.t),True,(255,255,255))
canvas.blit(TextScore,(550,20))if Game.n %50==1:
Game.t -=1
Game.n +=1if Game.t ==0:
Game.state ='END'
# 主な制御機能を定義する
def control():if Game.state =='RUNNING':conEnter()conPaint()conStep()checkHit()
elif Game.state =='END':
canvas.blit(gameover,(0,0))
TextFont = pygame.font.SysFont('SimHei',40)
TextScore = TextFont.render('最終スコア:'+str(Game.score),True,(0,0,0))
canvas.blit(TextScore,(50,50))while True:
# メインコントロール機能を呼び出す
control()
# 画面の内容を更新する
pygame.display.update()
# 10ミリ秒の遅延
pygame.time.delay(10)
# イベントを聞く
handleEvent()
このコードは、イベント、関数の定義、残りの取得、ループ、判断、クラスの定義、オブジェクトの作成など、Pythonの基本的な知識を使用しています。これについては何も言うことはありません。インポートされたライブラリも非常に一般的に使用されるライブラリであり、基本的にプログラマに必要です。コードは主に参照用にここに配置されています。書けないのなら、Pythonを書き続けるのが恥ずかしいです...
私のコードを使用できます。イベントの監視やその他の機能を実行するときに便利です。
下の写真を投稿しましたので、手に取ってください。
ソースダウンロード
これまでに、Pythonでフィッシングマスターを書くゲームの実装に関するこの記事を紹介しました。Pythonでフィッシングマスターを作成するための関連コンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。 ZaLou.Cnをサポートしてください!
Recommended Posts