中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

天津網(wǎng)站設(shè)計(jì)公司排名優(yōu)幫云排名優(yōu)化

天津網(wǎng)站設(shè)計(jì)公司排名,優(yōu)幫云排名優(yōu)化,做的網(wǎng)站如何被百度搜到,網(wǎng)站開發(fā)現(xiàn)在用什么目錄 前言 一、監(jiān)聽按鍵并作出判斷 二、持續(xù)移動(dòng) 三、左右移動(dòng) 總結(jié): 前言 今天開始正式操控我們的小蜜蜂了,之前學(xué)java的時(shí)候是有一個(gè)函數(shù)監(jiān)聽鼠標(biāo)和鍵盤的操作,我們通過傳過來不同的值進(jìn)行判斷,現(xiàn)在來看看python是否一樣的實(shí)現(xiàn)…

目錄

前言

一、監(jiān)聽按鍵并作出判斷

?二、持續(xù)移動(dòng)

?三、左右移動(dòng)

?總結(jié):


前言

今天開始正式操控我們的小蜜蜂了,之前學(xué)java的時(shí)候是有一個(gè)函數(shù)監(jiān)聽鼠標(biāo)和鍵盤的操作,我們通過傳過來不同的值進(jìn)行判斷,現(xiàn)在來看看python是否一樣的實(shí)現(xiàn)。

一、監(jiān)聽按鍵并作出判斷

?以我淺薄的知識(shí)判斷,流程應(yīng)該為時(shí)刻監(jiān)聽鍵盤或者鼠標(biāo)的操作,然后判斷鍵盤是否點(diǎn)擊的方向鍵,假如點(diǎn)擊一下向左移動(dòng),那么我們就將小蜜蜂的位置向左移動(dòng)一個(gè)設(shè)定好的距離,然后再顯示在屏幕上。我們專門創(chuàng)建了一個(gè)模塊game_functions來存放游戲操作的代碼,那么我們?cè)趃ame_functions模塊里面編寫就性,下面我們看看代碼:

import sys
import pygamedef check_events(ship):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type==pygame.KEYDOWN:if event.key == pygame.K_RIGHT:ship.rect.centerx += 1
def update_screen(new_setting,screen,ship):screen.fill(new_setting.bg_color)ship.blitme()pygame.display.flip()

可以看出,我們將check_events()函數(shù)進(jìn)行了補(bǔ)充,增加了判斷,之前只是判斷是否點(diǎn)擊了關(guān)閉,現(xiàn)在增加了對(duì)鍵盤輸入的判斷,我們?cè)敿?xì)分析一下:

1、首先判斷事件類型是否為鍵盤事件KEYDOWN。pygame.KEYDOWN是一個(gè)事件類型,指的是鍵盤上某個(gè)鍵被按下的事件。當(dāng)鍵盤上的某個(gè)鍵被按下時(shí),pygame會(huì)生成一個(gè)KEYDOWN事件,程序可以通過檢測(cè)這個(gè)事件來獲取鍵盤按鍵的信息,如按下的是哪個(gè)鍵、是否同時(shí)按下了Shift、Ctrl等修飾鍵。

2、當(dāng)判斷我們確實(shí)是在鍵盤按下某個(gè)鍵后,進(jìn)入下一步判斷,判斷到底是按了哪個(gè)鍵,代碼中我們目前只寫的按向右移動(dòng)的鍵。常見的event.key值包括:

  • pygame.K_UP/K_DOWN/K_LEFT/K_RIGHT表示方向鍵上下左右
  • pygame.K_SPACE表示空格鍵
  • pygame.K_ESCAPE表示Esc鍵
  • pygame.K_RETURN表示回車鍵
  • pygame.K_a到pygame.K_z表示26個(gè)字母鍵

3、當(dāng)我們判斷匹配后,我們需要將小蜜蜂位置向右移動(dòng)一格,那么我們需要改變Ship模塊里面的rect.centerx值,將它加1,那么我們就需要傳入ship,因此在定義check_events()是要設(shè)置參數(shù),將ship傳進(jìn)來。

?我們將check_events()函數(shù)修改好以后,那么我們就需要在主函數(shù)里調(diào)用它,之前我們已經(jīng)調(diào)用了check_events()函數(shù)用來判斷程序的關(guān)閉,但是現(xiàn)在因?yàn)橐觽鲄⑦M(jìn)去,所以略加修改,增加傳參ship就行。

import pygame
import settings
from ship import Ship
import game_functions as gfdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))ship = Ship(screen)pygame.display.set_caption("Alien Invasion")while True:gf.check_events(ship)gf.update_screen(new_setting,screen,ship)run_game()

?

?

?通過運(yùn)行程序,點(diǎn)擊右方向鍵,我們可以看出,小蜜蜂向右進(jìn)行了移動(dòng)。

?二、持續(xù)移動(dòng)

?在操作的過程中,我發(fā)現(xiàn)我需要不停的點(diǎn)擊右移動(dòng)鍵才能實(shí)現(xiàn)小蜜蜂不斷右移動(dòng),這是反人性的,以我多年打cs、街頭籃球、QQ飛車、泡泡堂的經(jīng)驗(yàn)來說,人類更習(xí)慣于點(diǎn)著不放實(shí)現(xiàn)持續(xù)移動(dòng),喜歡連發(fā),而不喜歡點(diǎn)射?!按篁摺焙苜N心的告訴我們下一步該怎么實(shí)現(xiàn)持續(xù)功能。

?“大蟒蛇”提供的思路是:不再以按下向右移動(dòng)鍵為判斷小蜜蜂向右移動(dòng)的條件,而是設(shè)置另一個(gè)變量(比如m),m初始值為0,如果按下右移動(dòng)鍵,m為1,只要m等于1,小蜜蜂就向右移動(dòng),如果m等于0,小蜜蜂就不動(dòng)。個(gè)人覺得思路可行,只需要再加一個(gè)判斷,判斷松開右移動(dòng)鍵時(shí),將0賦值給m。下面我們來看代碼

import pygameclass Ship():def __init__(self,screen):self.screen = screenself.image = pygame.image.load('cat.png')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()self.rect.centerx = self.screen_rect.centerxself.rect.bottom=self.screen_rect.bottomself.moving_right = Falsedef update(self):if self.moving_right:self.rect.centerx += 1def blitme(self):self.screen.blit(self.image,self.rect)

?我們看到,我們重寫了Ship模塊,不僅是增加了一個(gè)變量(moving_right就相當(dāng)于我之前說的m,True和False就相當(dāng)于1和0),還增加了函數(shù)update,將小蜜蜂的移動(dòng)寫到了這里,那么我們的主函數(shù)和game_functions也要作出相應(yīng)修改(為什么不寫在game_functions里?)

import sys
import pygamedef check_events(ship):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type==pygame.KEYDOWN:if event.key == pygame.K_RIGHT:ship.moving_right = Trueelif event.type==pygame.KEYUP:if event.key == pygame.K_RIGHT:ship.moving_right = Falsedef update_screen(new_setting,screen,ship):screen.fill(new_setting.bg_color)ship.blitme()pygame.display.flip()

我們可以看出,在game_functions模塊里面,我們只需要將moving_right變量進(jìn)行修改,就能控制小蜜蜂的移動(dòng)。如果能理解前面我們的思路,那么KRYUP狀態(tài)就很好理解了,就是彈起或者說松開按鍵的意思。下面我們?cè)僭谥鞒绦驅(qū)ξ覀冃陆⒌膗pdate函數(shù)調(diào)用就行了。

import pygame
import settings
from ship import Ship
import game_functions as gfdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))ship = Ship(screen)pygame.display.set_caption("Alien Invasion")while True:gf.check_events(ship)ship.update()gf.update_screen(new_setting,screen,ship)run_game()

?三、左右移動(dòng)

?上面我們已經(jīng)實(shí)現(xiàn)了向右移動(dòng),那么向左移動(dòng)就變得十分簡(jiǎn)單,只需要在同樣的地方加一個(gè)判斷就行,這里建議大家自己寫,我們只需要在ship和game_functions模塊添加代碼就行。

?ship:

import pygameclass Ship():def __init__(self,screen):self.screen = screenself.image = pygame.image.load('cat.png')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()self.rect.centerx = self.screen_rect.centerxself.rect.bottom=self.screen_rect.bottomself.moving_right = Falseself.moving_left = Falsedef update(self):if self.moving_right:self.rect.centerx += 1if self.moving_left:self.rect.centerx -= 1def blitme(self):self.screen.blit(self.image,self.rect)

?game_functions:

import sys
import pygamedef check_events(ship):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type==pygame.KEYDOWN:if event.key == pygame.K_RIGHT:ship.moving_right = Trueelif event.key == pygame.K_LEFT:ship.moving_left = Trueelif event.type==pygame.KEYUP:if event.key == pygame.K_RIGHT:ship.moving_right = Falseif event.key == pygame.K_LEFT:ship.moving_left = Falsedef update_screen(new_setting,screen,ship):screen.fill(new_setting.bg_color)ship.blitme()pygame.display.flip()

??

?總結(jié):

?今天我們完成了小蜜蜂的左右移動(dòng),由點(diǎn)及面,窺一斑可見全豹,我們可以整理一下思路,之后我們只需要建立大黃蜂模塊和子彈模塊,然后在那兩個(gè)模塊里設(shè)置變量控制他們的移動(dòng)和消失,就可以初步完成游戲的基本功能。

http://www.risenshineclean.com/news/37013.html

相關(guān)文章:

  • 網(wǎng)站手機(jī)端打不開凡科網(wǎng)站登錄入口
  • 淘客手機(jī)網(wǎng)站模板發(fā)布
  • 衡陽縣做淘寶網(wǎng)站建設(shè)內(nèi)存優(yōu)化大師
  • jsp做網(wǎng)站圖片怎么存儲(chǔ)談?wù)勀銓?duì)網(wǎng)絡(luò)營銷的認(rèn)識(shí)
  • 深圳定制建站鄭州seo多少錢
  • 做網(wǎng)站 分辨率應(yīng)該是多少無錫網(wǎng)站制作優(yōu)化
  • 哪個(gè)網(wǎng)站做的最好百度競(jìng)價(jià)ocpc投放策略
  • 新聞網(wǎng)站抓取做輿情監(jiān)測(cè)河北網(wǎng)絡(luò)推廣技術(shù)
  • 一個(gè)網(wǎng)絡(luò)空間做兩個(gè)網(wǎng)站楚雄今日頭條新聞
  • 徐州自助建站系統(tǒng)google框架三件套
  • 如何做網(wǎng)站域名解析seo推廣軟件品牌
  • 做外鏈網(wǎng)站有哪些廣州seo服務(wù)
  • 網(wǎng)站如何做se外貿(mào)推廣網(wǎng)站
  • 網(wǎng)站建設(shè)期末考試答案跨境電商培訓(xùn)機(jī)構(gòu)哪個(gè)靠譜
  • 地方網(wǎng)站需要什么手續(xù)成免費(fèi)crm軟件有哪些優(yōu)點(diǎn)
  • 中山石岐網(wǎng)站建設(shè)重慶seo建站
  • 廊坊網(wǎng)站建設(shè)策劃經(jīng)典軟文廣告案例
  • 網(wǎng)站開發(fā)翻譯插件怎么推廣自己的微信
  • 網(wǎng)站建設(shè)服務(wù)內(nèi)容今天濟(jì)南剛剛發(fā)生的新聞
  • 公司怎么制作網(wǎng)站免費(fèi)發(fā)帖推廣網(wǎng)站
  • 吉林省建設(shè)廳網(wǎng)站首頁域名??烤W(wǎng)頁推廣大全
  • 網(wǎng)站功能設(shè)計(jì)的內(nèi)容個(gè)人怎么注冊(cè)自己的網(wǎng)站
  • 無貨源電商平臺(tái)有哪些廈門站長優(yōu)化工具
  • 廣告?zhèn)髅焦揪W(wǎng)站網(wǎng)站推廣策劃報(bào)告
  • html5網(wǎng)站開發(fā)的源碼網(wǎng)絡(luò)顧問
  • 西藏建設(shè)廳網(wǎng)站首頁seo科技網(wǎng)
  • 做視頻網(wǎng)站虛擬主機(jī)怎么選廣告聯(lián)盟接廣告
  • wordpress 采集圖片seo排名點(diǎn)擊首頁
  • 怎么用服務(wù)器搭建網(wǎng)站推廣之家app下載
  • 公司名稱注冊(cè)查詢系統(tǒng)seo營銷工具