❶ python寫的飛機大戰怎麼部署到伺服器
如何把Python項目部署到伺服器上
一,不需要域名的情況下
1,訪問阿里雲官網
2,注冊登錄(建議支付寶授權)
3,登陸後---》產品--》雲伺服器ECS
4,滾動條拉倒頁面底部--》點擊學生機
5,進入該頁面後默認是輕量應用伺服器們可以切換至雲伺服器ECS
6,右側選擇系統鏡像-à選擇我們熟悉的(相比之下比較熟悉的)windows
7,購買完成後回到之前的登陸後的頁面à點擊右上角的控制台à點擊左上角的雲服務ESCà點擊如圖所示位置(藍框位置)
8,進入管理
9,更多--》重置密碼--》(密碼重置成功後)--》右側點擊重啟(需要手機驗證碼)
10,本示例安全組--》配置規則
11,導入規則」安全組規則.json」(json文件在後面給大家)
12.添加成功後返回上一個頁面--》配置信息--》公網IP 找到公網ip,復制公網IP,(一會有用)
13,返回電腦桌面--》按windows鍵(或者點擊開始)--》搜索」遠程桌面連接」
14,點擊連接按鈕--》確定
15,根據上述步驟完成,就能順利連接到伺服器了,
1,此時把你的項目復制到上面,
2,安裝一下Python環境,
3,安裝需要的模塊:
pip install pymysql
pip install Djanjo
pip install pillow
最後 pip list 查看一下是否安裝成功
4,安裝mysql資料庫可視化工具
安裝XAMPP,可以直接啟動mysql,比較簡單方便操作(推薦使用)
5,連接資料庫,建立一個和你項目中一樣的資料庫名
把你原來的資料庫導出來,把裡面的數據復制粘貼到新建立的資料庫中
6,配置setting.py文件中的DATABASES(根據自己的密碼情況進行更 改)ALLOWED_HOSTS = ['*']
7,打開cmd窗口,同步資料庫
8,運行(python manage.py runserver 0.0.0.0:8000),指定埠號
9,在瀏覽器中訪問伺服器中的公網ip即可(伺服器不能關掉,不然不能訪問)
二,使用花生殼的情況,會送一個域名(也可申請域名)
1,在伺服器計算機中,安裝花生殼軟體
2,進入花生殼官網--》注冊---》下載--》安裝--》登錄
3,點擊內網穿透(添加映射,可以添加兩個)
購買內網穿透基礎服務(6元,購買送一個殼域名)-->購買成功重啟花生殼-->重復上一步操作-->添加映射
4,在瀏覽器地址欄輸入外網訪問地址就可以訪問了(花生殼不要關閉)
30
© 著作權歸作者所有
成年人記憶力衰退嚴重,快來學孫韜老師整理的記憶「口訣」
00:30
講真高效記憶訓練營
廣告
推薦閱讀
頁面訪問調試
squidbrother
閱讀99
搭建MySQL伺服器
技術老男孩
閱讀200
怎麼使用SSH Windows鏈接虛擬機的Linux終端
小黃不頭禿
閱讀671
MySQL服務圖形管理工具·phpMyAdmin
技術老男孩
閱讀196
虛擬機Ubuntu剪切板無法共享的解決方案
小黃不頭禿
閱讀614
【送財氣】適合家庭的理財方法?送你免費的爆款理財課,幫到你!
00:51
0元學理財快領
廣告
2條評論
寫評論
陌路班車
Djanjo寫錯了,是Django
3樓 · 2019-08-24 23:22
浪得虛佲
謝謝
❷ Python中好用的第三方mock庫-httmock
在做一些項目的時候,因為用到了第三方的介面,而第三方的介面可能沒有做好或者第三方的介面不方便訪問的時候,一般都會用到Mock的技術。
Mock這個詞在英語中有模擬的這個意思。Python3.x中本身就自帶了Mock庫,(Python2.x中還是單獨的)Mock是Python中一個用於支持單元測試的庫,它的主要功能是使用mock對象替代掉指定的Python對象,以達到模擬對象的行為。
簡單的說,mock庫用於如下的場景:
假設你開發的項目叫a,裡麵包含了一個模塊b,模塊b中的一個函數c(也就是a.b.c)在工作的時候需要調用發送請求給特定的伺服器來得到一個JSON返回值,然後根據這個返回值來做處理。如果要為a.b.c函數寫一個單元測試,該如何做?
一個簡單的辦法是搭建一個測試的伺服器,在單元測試的時候,讓a.b.c函數和這個測試伺服器交互。但是這種做法有兩個問題:
1 . 測試伺服器可能很不好搭建,或者搭建效率很低。
2 . 你搭建的測試伺服器可能無法返回所有可能的值,或者需要大量的工作才能達到這個目的。
httmock庫是基於Mock庫的,它更方便於用requests的方式來返回介面的值。
使用pip命令來安裝:
用法:
1 您可以使用它來模擬第三方API和在內部使用 requests 的測試庫,有條件地使用 urlmatch 裝飾器:
控制台顯示:
2 all_requests 裝飾器沒有條件地阻止實際的請求。 如果您返回一個字典,它將映射到返回的「request.Response」對象:
控制台顯示:
3 如果你傳遞 Set-Cookie 頭, request.Response.cookies 將包含這些值。 您也可以直接使用 response 方法,而不是返回一個dict:
控制台顯示:
CC先生說:
要明白上面的例子,預備知識至少需要有:
-Python 中requests庫的用法
-Python中裝飾器的用法
or 你直接套用上面的用法就可以返回第三方介面或者依賴的模塊的值了。
以上
❸ python編程例子有哪些
python編程經典例子:
1、畫愛心表白、圖形都是由一系列的點(X,Y)構成的曲線,由於X,Y滿足一定的關系,所以就可以建立模型,建立表達式expression,當滿足時,兩個for循環(for X in range;for Y in range)就會每行每列的列印。
(3)python模擬航班擴展閱讀:
Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。
Python開發者有意讓違反了縮進規則的程序不能通過編譯,以此來強制程序員養成良好的編程習慣。並且Python語言利用縮進表示語句塊的開始和退出,而非使用花括弧或者某種關鍵字。增加縮進表示語句塊的開始,而減少縮進則表示語句塊的退出,縮進成為了語法的一部分。
❹ python的pygame製作飛機大戰時遇到的問題
能寫這么多代碼 應該能自主解決血量的問題
所以我猜代碼是從哪裡復制來的 對嗎
❺ 怎麼用python學飛機大戰
1、我方飛機模塊
import pygame
class MyPlane(pygame.sprite.Sprite):
def __init__(self,bg_size):
pygame.sprite.Sprite.__init__(self)
self.image1 = pygame.image.load(r'E:\learn pygame\image\me1.png').convert_alpha()
self.image2 = pygame.image.load(r'E:\learn pygame\image\me2.png').convert_alpha()
self.image3 = pygame.image.load(r'E:\learn pygame\image\me_protect.png').convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(r'E:\learn pygame\image\me_destroy_1.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\me_destroy_2.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\me_destroy_3.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\me_destroy_4.png').convert_alpha() \
])
self.rect = self.image1.get_rect()
self.width,self.height = bg_size[0],bg_size[1]
self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 60
self.speed = 10
self.active = True
self.invincible = False
self.mask = pygame.mask.from_surface(self.image1)
def moveUp(self):
if self.rect.top > 0:
self.rect.top -= self.speed
else:
self.rect.top = 0
def moveDown(self):
if self.rect.bottom < self.height - 30:
self.rect.top += self.speed
else:
self.rect.bottom = self.height - 30
def moveLeft(self):
if self.rect.left > 0:
self.rect.left -= self.speed
else:
self.rect.left = 0
def moveRight(self):
if self.rect.right < self.width:
self.rect.left += self.speed
else:
self.rect.right = self.width
def reset(self):
self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 30
self.active = True
self.invincible = True
2、敵機與背景動圖模塊
import pygame
from random import *
class SmallEnemy(pygame.sprite.Sprite):
energy = 1
def __init__(self,bg_size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(r'E:\learn pygame\image\enemy1.png').convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(r'E:\learn pygame\image\enemy1_down1.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\enemy1_down2.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\enemy1_down3.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\enemy1_down4.png').convert_alpha() \
])
self.rect = self.image.get_rect()
self.width,self.height = bg_size[0],bg_size[1]
self.speed = 2
self.active = True
self.rect.left,self.rect.top = \
randint(0,self.width - self.rect.width), \
randint(-5 * self.height, 0)
self.mask = pygame.mask.from_surface(self.image)
self.energy = SmallEnemy.energy
self.hit = False
def move(self):
if self.rect.top < self.height:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.active = True
self.energy = SmallEnemy.energy
self.rect.left,self.rect.top = \
randint(0,self.width - self.rect.width), \
randint(-5 * self.height, 0)
class MidEnemy(pygame.sprite.Sprite):
energy = 4
❻ 如何為pygame的飛機大戰增加一個分數排行榜python
import pygame
from plane_sprites import*
from Background import BackGround
from Enemy import Enemy
from Hero import Hero
from time import sleep
from Bullet import Bullet
class Plane_main(object):
def __init__(self):
print('游戲初始化')
self.screen = pygame.display.set_mode(SCREEN_RECT.size)
self.clock = pygame.time.Clock()
self.__create_sprites()
pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)
pygame.time.set_timer(HERO_FIRE_EVENT, 500)
self.count = 0
self.score = 0
def __create_sprites(self):
# 背景組
self.back_group = pygame.sprite.Group()
bg1 = BackGround()
bg2 = BackGround(True)
pygame.mixer.init()
pygame.mixer.music.load("./Capo Proctions - Journey 00_00_00-00_00_59.ogg")
pygame.mixer.music.play(-1)
self.back_group.add(bg1,bg2)
# 敵機組
self.enemy_group = pygame.sprite.Group()
#敵級銷毀組
self.enemy1_down_group=pygame.sprite.Group()
# 英雄組
self.hero_group = pygame.sprite.Group()
self.hero = Hero()
self.hero_group.add(self.hero)
def start_game(self):
pygame.init()
print("開始游戲...")
# pygame.mixer.init()
# pygame.mixer.music.load("./Capo Proctions - Journey 00_00_00-00_00_59.ogg")
# pygame.mixer.music.play(-1)
# gameIcon = pygame.image.load("./name.png")
# pygame.display.set_icon(gameIcon)
while True:
self.count+=1
# 1. 設置刷新幀率
self.clock.tick(10)
# 2. 事件監聽
self.__event_handler()
# 3. 碰撞檢測
self.__check_collide()
# 4. 更新精靈組
self.__update_sprites()
# 5. 更新屏幕顯示
pygame.display.update()
def __event_handler(self):
"""事件監聽"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
Plane_main.__game_over()
elif event.type == CREATE_ENEMY_EVENT:
self.enemy_group.add(Enemy())
elif event.type == HERO_FIRE_EVENT:
self.hero.fire()
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]:
print('向右移動')
self.hero.speed = 5
self.hero.speed1 = 0
elif keys[pygame.K_LEFT]:
print('向左移動')
self.hero.speed = -5
self.hero.speed1 = 0
elif keys[pygame.K_UP]:
print('向上移動')
self.hero.speed1 = -5
self.hero.speed = 0
elif keys[pygame.K_DOWN]:
print('向下移動')
self.hero.speed1= 5
self.hero.speed = 0
else:
self.hero.speed = 0
self.hero.speed1 = 0
if event.type == HERO_FIRE_EVENT:
self.hero.fire()
print('發射子彈!!!!!')
def __check_collide(self):
"""碰撞檢測"""
# 1. 子彈摧毀敵機
enemy_down = pygame.sprite.groupcollide(self.enemy_group, self.hero.bullets,True, True)
enemy1_down_group.add(enemy_down)
# 2. 敵機撞毀英雄
enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)
# 判斷列表時候有內容`
if len(enemies) > 0:
sleep(3)
# # 讓英雄犧牲
self.hero.kill()
# 結束游戲
Plane_main.__game_over()
def __update_sprites(self):
self.back_group.update()
self.back_group.draw(self.screen)
self.enemy_group.update()
self.enemy_group.draw(self.screen)
self.hero_group.update()
self.hero_group.draw(self.screen)
self.hero.bullets.update()
self.hero.bullets.draw(self.screen)
self.drawText(str(self.score),SCREEN_RECT.width - 50,50)
for enemy1_down in enemy1_down_group:
self.screen.blit(enemy1_down_surface[enemy1_down.down_index],enemy1_down.rect)
if self.count % 5 ==0:
enemy1_down.down_index += 1
if enemy1_down.down_index ==3:
# pygame.mixer.music.load("./baozha.ogg")
# pygame.mixer.music.play()
self.score+=5
enemy1_down_group.remove(enemy1_down)
print(self.score)
#更新精靈組
# for group in [self.back_group, self.enemy_group, self.hero_group,self.hero.bullets]:
# group.update()
# group.draw(self.screen)
@staticmethod
def __game_over():
"""游戲結束"""
print("游戲結束")
pygame.quit()
exit()
def drawText(self,text,posx,posy,textHeight=48,fontColor=(0,0,0),backgroundColor=(111,225,1)):
fontObj = pygame.font.Font('freesansbold.ttf',textHeight)
textSurfaceObj = fontObj.render(text,13,fontColor,backgroundColor)
textRectObj = textSurfaceObj.get_rect()
textRectObj.center = (posx,posy)
self.screen.blit(textSurfaceObj,textRectObj)
#判斷當前執行的文件是否是主文件
#如果不是 則if下的代碼不會執行
if __name__ == '__main__':
game = Plane_main()
game.start_game()