主頁 >  其他 > pygame撰寫籃球游戲-火柴人運球避開防守跳起投籃

pygame撰寫籃球游戲-火柴人運球避開防守跳起投籃

2021-06-16 19:07:32 其他

網上有很多籃球類游戲,這里使用pygame撰寫了一個,游戲中有一個投籃手,一個防守者,投籃手運球避開防守,跳起投籃,投中得一分,投籃手離籃筐越近,投籃準確率越高,但離籃筐越近,越可能碰到防守者,如碰到,游戲結束,下邊是游戲的效果圖,
在這里插入圖片描述
游戲背景是籃球場,如上圖,有3個角色,投籃手、防守者和籃球各1個,分別用類來定義,角色影片造型采用火柴人,這是因為火柴人造型容易找到,即使自己畫一個也不難,可惜本人畫圖能力太差,只能從一段視頻中一幀一幀摳出造型,所有圖形背景都要設定為透明,3個角色所有圖形如下:
在這里插入圖片描述
投籃手運球有4個黑色造型,幀號0-3,當按空格鍵將啟動跳投,將幀號修改為4,跳投有12個黑色造型,幀號4-15,所有造型用來實作投籃手運球和跳投影片,在前1篇博文“籃球游戲中的運球_用串列保存每幀圖片”中,可以看到在每秒4幀圖形情況下,4個造型就可以完成運球影片,注意球也是造型的一部分,但在每秒4幀圖形情況下,跳投影片僅用4幀圖形是不可能的,試了一下,每秒4幀,感覺要用12幀圖形,即跳投從起跳到再落下需用12*\0.25秒=3秒時間,才有滿意的影片效果,跳投的12個圖形有有點湊合事,但還是能看到影片效果的,如把12個圖形仔細畫一下,可能效果更好,注意,跳投的第4、5和6幀中圖形是有籃球的,后邊幀無籃球,在適當時候(本例在第8幀),籃球角色將出現在投籃者上方,以此為起點向籃板運動,在第13幀碰到籃板,第14和15幀球向下運動,如投中,直接掉到藍中,如未投中,從側方向下掉,籃球只有一個圖形,
首先要解決的問題是那種情況投籃能中,那種情況投籃不中,網上投籃游戲投中規則五花八門,本游戲規則是:距離籃筐越遠投籃越不準,在某一點投籃,那次投中,那次投不中無規律,或者說是隨機的,但投中概率是定值,設從投籃點到籃筐距離為L,令n=(L//100)取整數,使用亂數發生器產生1到n+1之間隨機整數,規定亂數為1,投中,其它隨機整數投不中,如點到籃筐架距離Y<100,n=0,投中率為100%;如200>L>99,n=1,投中率為50%;如300>L>199,n=2,投中率為33%,等等,
防守者只有2個黃色造型,似乎少了點,在本例勉強夠用,當防守者和投籃手距離大于200,防守者退到防守初始位置,小于200,而且投籃手正在運球,防守者逼近防守,即防守者面向投籃手移動若干距離(應為整數),如碰到投籃手,游戲結束,所謂面向,即防守者沿防守者和投籃手連線移動,這樣,這個連線L,以及防守者和投籃手兩點沿x、y軸的差值dx和dy組成一個直角三角形,如防守者每幀沿x軸移動dx1,沿y軸移動dy1,只有dx1/dy1=dx/dy,就保證防守者面向投籃手移動,可令dy1=7,則dx1=7dx/dy,但dy為0,要產生被0除錯誤,為避免此種情況,可先判斷dx和dy大小,如dx<dy,采用上式,否則,dx1=7,dy1=7dy/dx,注意dx和dy是不可能同時為0的,因同時為0前,投籃手和防守者就會接近,發生碰撞,導致游戲結束,這樣做,不同方向移動的距離可能不同,上例中,最大值為兩直角邊都為7,距離為9.899,只能取整數為:9,如較小直角邊為0,則距離為7,另外,沿x、y軸增量都只能是整數,因此方向也有誤差,
以下是游戲全部程式,做了詳細注解,應該較容易讀懂程式,水平有限,不免有考慮不周之處,歡迎批評指正,僅拷貝源程式不能正確運行,需要制作投籃手和防守者全部造型,球造型,背景籃球場,放到源程式所在檔案夾中,將把源程式和所有影像打包上傳,有需要的讀者可下載,玩游戲時,由于投籃者隨滑鼠移動,在打開程式或重玩游戲時,必須把滑鼠移到程式視窗外邊界,避免程式一開始就和防守者發生碰撞,導致游戲結束,

import pygame
import math
import random
import os
class Ball():                       #籃球類
    def __init__(self,screen):      #screen是游戲主表單,Surface類實體
        self.screen=screen
        b=pygame.image.load('b.png').convert_alpha()                #得到籃球圖形
        r=b.get_rect()
        self.p=pygame.transform.scale(b,(r.width//2,r.height//2))   #縮小圖形
        self.x,self.y,self.xi,self.yi=0,0,0,0#(x,y)籃球坐標,(xi,yi)是籃球兩個位置間增量
        self.frameNum=9         #籃球幀編號(1-8),=9,籃球不可見
        self.mark=0             #此次投籃中否,=0不中,=1中
        self.score=0            #投籃投中次數(得分)        
    def draw(self):             #主程式呼叫,實作籃球影片
        if self.frameNum==9:    #籃球幀編號=9,籃球不可見           
            return
        if self.frameNum==1:    #第1幀計算必要資料,下句坐標(self.x,self.y)是球運行起點
            dx,dy=(400-self.x),(40-self.y)  #坐標(400,530)點是球碰到籃板上的點
            self.xi=dx//6                   #籃球從起始點到籃板每幀沿x軸前進的增量
            self.yi=dy//6                   #籃球從起始點到籃板每幀沿y軸前進的增量
            dist=math.sqrt((dx**2)+(dy**2))     #投籃點距離籃板距離
            n=int(dist//100)                    #除數越小,總投中率越低
            if random.randint(1,n+1)==1:        #亂數為1投中,n+1避免dist<100為0
                self.mark=1                     #投中標記為1           
            else:
                self.mark=0                     #投不中為0
        if self.frameNum>=1 and self.frameNum<6:    #從第1幀到第5幀,球按此法前進
            self.x+=self.xi                         #籃球每幀沿x軸增加1個增量值
            self.y+=self.yi                         #籃球每幀沿y軸增加1個增量值
            self.frameNum+=1
        elif self.frameNum==6:      #此幀球將碰到籃板,要準確控制碰到籃板的落點
            self.x=400              #球碰到籃板的x坐標    
            self.frameNum+=1
            if self.mark==1:        #投中,籃球落點y軸方向靠近籃筐
                self.y=90
            else:                   #投不中,籃球落點y軸方向離籃筐較遠
                self.y=70
        else:                       #籃球下落的兩個點,即第7,8幀
            if self.mark==0:        #球未投中,球除下落,還沿x軸方向移動,球從籃筐兩側落下
                if self.xi>=0:      #如球從左到右,最后兩幀,球沿x軸方向繼續從左向右移動
                    self.x+=30
                else:
                    self.x-=30      #否則最后兩幀,球沿x軸方向繼續從右向左移動
            self.y+=25              #如投中x坐標不變,即球直接下落穿過籃筐
            self.frameNum+=1
        self.screen.blit(self.p, (self.x, self.y)) #在螢屏指定位置繪制籃球
        if self.frameNum==9 and self.mark==1:      #球所有動作完成,判斷得分是否加1 
            self.score+=1
class Guard():                      #防守者類
    def __init__(self,screen):      ##screen是游戲主表單,Surface類實體
        self.screen=screen
        self.images=[]
        for n in range(2):          #將2幀影像保存到串列中
            p = pygame.image.load(str(n+16)+'.png').convert_alpha()#檔案名為16.png,17.png
            r=p.get_rect()      
            p = pygame.transform.scale(p, (r.width//6, r.height//6))    #調整影像的大小
            self.images.append(p)
        self.frameNum=0                 #幀編號,0-1
        self.x,self.y=400,300           #防守運動員在表單的初始坐標
        self.PlayerX,self.PlayerY=0,0   #此時投籃手坐標
        self.PlayerFrameNum=0           #此時投籃手幀號
        self.rect=None#呼叫blit繪制圖形,回傳rect記錄圖形在screen坐標和圖形寬和高,用來檢測碰撞
    def draw(self):                     #主程式呼叫,實作防守者影片
        p=self.images[self.frameNum]                #取出當前幀圖形
        if self.PlayerX-self.x<0:                   #面向投籃手
            p=pygame.transform.flip(p,True,False)
        dx,dy=self.PlayerX-self.x,self.PlayerY-self.y #防守者和投籃手兩點沿x、y軸的差值dx和dy
        dist=math.sqrt((dx**2)+(dy**2))               #計算投籃手和防守者距離
        dx1,dy1=0,0                 #防守者每幀沿x軸移動dx1,沿y軸移動dy1
        if dist>200:                #如距投籃者>200,回傳初始點
            self.x,self.y=400,300
        elif self.PlayerFrameNum<4: #如投籃者未投籃,逼近投籃者,如投籃者投籃,防守者位置不變
            if abs(dx)<abs(dy):     #保證abs(dy)不為0,使下句dx/dy一定不會被0除
                d=abs(dx/dy)
                dy1=7                #如矩形長邊為7,
                dx1=int((dy1*d)//1)  #dx1可能是:0,1,2,3,4,5,6,7
            else:                    #保證abs(dx)不為0,使下句dy/dx一定不會被0除
                d=abs(dy/dx)
                dx1=7                #如矩形長邊為7,
                dy1=int((dx1*d)//1)  #dy1可能是:0,1,2,3,4,5,6,7
        if dx<0:                     #得到dx的正負號
            dx1=-dx1
        if dy<0:                     #得到dy的正負號
            dy1=-dy1
        self.x+=dx1                  #防守者移動
        self.y+=dy1#下句回傳rect用來檢測碰撞,其屬性x,y是圖形在游戲視窗坐標,width,hight是圖形寬和高
        self.rect=self.screen.blit(p,(self.x,self.y))   #在螢屏指定位置繪制防守者
        self.frameNum+=1        
        if self.frameNum==2:
            self.frameNum=0
class Player():                 #投籃手類
    def __init__(self,screen):  #screen是游戲主表單,Surface類實體
        self.screen=screen
        self.images=[]
        for n in range(16):      #將16幀影像(包括運球和跳投影像)保存到串列中
            p = pygame.image.load(str(n)+'.png').convert_alpha()#檔案名為1.png,2.png...
            r=p.get_rect()      
            p = pygame.transform.scale(p, (r.width//6, r.height//6))    #調整影像的大小
            self.images.append(p)
        self.frameNum=0                 #幀編號,運球為0到3,跳投為4到15
        self.x,self.y=0,0               #影像在表單的坐標
        self.mouseX,self.mouseY=0,0     #此時滑鼠坐標值
        self.jumpUpOrDown=-10   #按空格鍵后投籃手向上跳,初始值為負數,到最高點后下落,為正數
        self.rect=None#呼叫blit繪制圖形,回傳rect記錄圖形在screen坐標和圖形寬和高,用來檢測碰撞
    def dribble(self):          #運球影片
        p=self.images[self.frameNum]
        if self.mouseX-self.x<0:        #面向滑鼠
            p=pygame.transform.flip(p,True,False)
        self.x,self.y=self.mouseX,self.mouseY   #投籃手坐標=滑鼠坐標
        if self.x<1:                            #控制投籃手必須在籃球場中
            self.x=1
        if self.x+90>width:
            self.x=width-90
        if self.y<230:
            self.y=230
        if self.y+120>height:
            self.y=height-120
        self.rect=self.screen.blit(p,(self.x,self.y)) #在指定位置繪制圖形,回傳rect
        self.frameNum+=1
        if self.frameNum==4:
            self.frameNum=0
    def jumpShot(self):                             #跳投影片
        p=self.images[self.frameNum]
        if self.x>width/2:                          #面向籃板
            p=pygame.transform.flip(p,True,False)
        self.screen.blit(p, (self.x, self.y))   #跳投初始位置是運球轉跳投時位置
        self.y+=self.jumpUpOrDown               #以后先向上(y值減少),到最高點后下降
        self.frameNum+=1        
        if self.frameNum==9:    #開始下落,下落值為正
            self.jumpUpOrDown=10           
        if self.frameNum==16:   #=16,跳起投籃結束,轉運球
            self.frameNum=0
            self.jumpUpOrDown=-10
pygame.init()
os.environ['SDL_VIDEO_WINDOW_POS']="%d,%d"%(200,40) #游戲視窗距左側和頂部點數為200,40
size = width, height = 800,600                      #創建游戲視窗大小
screen = pygame.display.set_mode(size)  
pygame.display.set_caption("投手運球和跳投")        #設定視窗標題
bg_img = pygame.image.load("籃球場1.png").convert() #背景籃球場影像

fclock = pygame.time.Clock()                        #創建控制頻率的clock
fps = 4                                             #定義重繪頻率
player=Player(screen)                               #投籃手類實體
ball=Ball(screen)                                   #籃球類實體
guard=Guard(screen)                                 #防守者類實體
font1 = pygame.font.SysFont('宋體', 50, True)       #創建字體
gameOver=False                                      #該次游戲是否結束,初始不結束
running = True                                      #程式是否結束,初始運行
while running:    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:               #處理退出事件
            running = False                         #程式結束
        if event.type == pygame.MOUSEMOTION:        #滑鼠移動事件
            player.mouseX,player.mouseY=event.pos   #將滑鼠位置傳遞給投籃手用于運球
        if event.type == pygame.KEYUP:              #按鍵后抬起事件,避免長按鍵不抬起
            if event.key == pygame.K_SPACE:         #按空格鍵后抬起
                if player.frameNum<4:               #如在運球狀態,轉投籃狀態
                    player.frameNum=4               #已在投籃狀態不處理
            if event.key == pygame.K_r and gameOver==True:     #按r鍵后抬起,重玩游戲
                gameOver=False
                ball.score=0
    screen.blit(bg_img, (0, 0))             #繪制籃球場背景
    surface1=font1.render('score:'+str(ball.score),True,[255,0,0])  #不能顯示中文
    screen.blit(surface1, (20, 20))         #顯示進球數(得分)
    if gameOver==True:                      #如果該次游戲結束,后邊程式不再執行
        fclock.tick(fps)   #fps是每秒多少幀,減去程式運行時間,為實作fps,還需延遲時間
        continue
    if player.frameNum>=4:              #如果投籃手幀號>=4,投籃手正在跳投
        player.jumpShot()
        if player.frameNum==8:          #第8幀跳起手中無球,籃球要出現并開始向籃板運動
            ball.frameNum=1             #球向籃板運動第1幀
            ball.x=player.x             #球向籃板運動的起始位置
            ball.y=player.y
    else:                                   #如果投籃手幀號<4,投籃手正在運球
        player.dribble()
    ball.draw()                             #籃球影片
    guard.PlayerX,guard.PlayerY=player.x,player.y   #將投籃手位置傳遞給防守者
    guard.PlayerFrameNum=player.frameNum            #將投籃手幀號傳遞給防守者
    guard.draw()                            #防守運動員影片        
    if player.frameNum<4:               #僅在投籃手運球時,判斷和防守者是否發生碰撞
        if player.rect.colliderect(guard.rect):     #檢測投籃者和防守者是否發生碰撞
            gameOver=True                           #發生碰撞,游戲結束
            surface2=font1.render('if play again,press key r',True,[255,0,0])
            screen.blit(surface2, (20, 100))        #顯示如繼續玩,按r鍵
    pygame.display.flip()                           #重繪游戲場景
    fclock.tick(fps)        #fps是每秒多少幀,減去程式運行時間,為實作fps,還需延遲時間
pygame.quit()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287817.html

標籤:其他

上一篇:技術人玩小游戲,如何“不戰而勝”

下一篇:V3S移植nes游戲模擬器(附帶游戲合集)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more