大家好,小編來為大家解答以下問題,python游戲編程入門游戲代碼,python游戲代碼大全可復制,現在讓我們一起來看看吧!
哈嘍鐵子們
表弟最近在學Python,總是跟我抱怨很枯燥無味,其實,他有沒有認真想過,可能是自己學習姿勢不對?
比方說,可以通過打游戲來學編程!
今天給大家分享100個Python小游戲,一定要收藏!
1、簡易飛機大戰(zhàn)
飛機大戰(zhàn)相信大家都玩過吧,非常簡單有意思的游戲,咱們通過Python給它復刻出來,回味童年。
素材文件
全部源碼:
import sys
import cfg
import pygame
from modules import *
'''游戲界面'''
def GamingInterface(num_player, screen):
# 初始化
pygame.mixer.music.load(cfg.SOUNDPATHS['Cool Space Music'])
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
explosion_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['boom'])
fire_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['shot'])
font = pygame.font.Font(cfg.FONTPATH, 20)
# 游戲背景圖
bg_imgs = [cfg.IMAGEPATHS['bg_big'], cfg.IMAGEPATHS['seamless_space'], cfg.IMAGEPATHS['space3']]
bg_move_dis = 0
bg_1 = pygame.image.load(bg_imgs[0]).convert()
bg_2 = pygame.image.load(bg_imgs[1]).convert()
bg_3 = pygame.image.load(bg_imgs[2]).convert()
# 玩家, 子彈和小行星精靈組
player_group = pygame.sprite.Group()
bullet_group = pygame.sprite.Group()
asteroid_group = pygame.sprite.Group()
# 產生小行星的時間間隔
asteroid_ticks = 90
for i in range(num_player):
player_group.add(Ship(i+1, cfg))
clock = pygame.time.Clock()
# 分數
score_1, score_2 = 0, 0
# 游戲主循環(huán)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# --玩家一: ↑↓←→控制, j射擊; 玩家二: wsad控制, 空格射擊
pressed_keys = pygame.key.get_pressed()
for idx, player in enumerate(player_group):
direction = None
if idx == 0:
if pressed_keys[pygame.K_UP]:
direction = 'up'
elif pressed_keys[pygame.K_DOWN]:
direction = 'down'
elif pressed_keys[pygame.K_LEFT]:
direction = 'left'
elif pressed_keys[pygame.K_RIGHT]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_j]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
elif idx == 1:
if pressed_keys[pygame.K_w]:
direction = 'up'
elif pressed_keys[pygame.K_s]:
direction = 'down'
elif pressed_keys[pygame.K_a]:
direction = 'left'
elif pressed_keys[pygame.K_d]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_SPACE]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
if player.cooling_time > 0:
player.cooling_time -= 1
if (score_1 + score_2) < 500:
background = bg_1
elif (score_1 + score_2) < 1500:
background = bg_2
else:
background = bg_3
# --向下移動背景圖實現飛船向上移動的效果
screen.blit(background, (0, -background.get_rect().height + bg_move_dis))
screen.blit(background, (0, bg_move_dis))
bg_move_dis = (bg_move_dis + 2) % background.get_rect().height
# --生成小行星
if asteroid_ticks == 0:
asteroid_ticks = 90
asteroid_group.add(Asteroid(cfg))
else:
asteroid_ticks -= 1
# --畫飛船
for player in player_group:
if pygame.sprite.spritecollide(player, asteroid_group, True, None):
player.explode_step = 1
explosion_sound.play()
elif player.explode_step > 0:
if player.explode_step > 3:
player_group.remove(player)
if len(player_group) == 0:
return
else:
player.explode(screen)
else:
player.draw(screen)
# --畫子彈
for bullet in bullet_group:
bullet.move()
if pygame.sprite.spritecollide(bullet, asteroid_group, True, None):
bullet_group.remove(bullet)
if bullet.player_idx == 1:
score_1 += 1
else:
score_2 += 1
else:
bullet.draw(screen)
# --畫小行星
for asteroid in asteroid_group:
asteroid.move()
asteroid.rotate()
asteroid.draw(screen)
# --顯示分數
score_1_text = '玩家一得分: %s' % score_1
score_2_text = '玩家二得分: %s' % score_2
text_1 = font.render(score_1_text, True, (0, 0, 255))
text_2 = font.render(score_2_text, True, (255, 0, 0))
screen.blit(text_1, (2, 5))
screen.blit(text_2, (2, 35))
# --屏幕刷新
pygame.display.update()
clock.tick(60)
'''主函數'''
def main():
pygame.init()
pygame.font.init()
pygame.mixer.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('簡易版——飛機大戰(zhàn) ')
num_player = StartInterface(screen, cfg)
if num_player == 1:
while True:
GamingInterface(num_player=1, screen=screen)
EndInterface(screen, cfg)
else:
while True:
GamingInterface(num_player=2, screen=screen)
EndInterface(screen, cfg)
'''run'''
if __name__ == '__main__':
main()
2、寶石消消樂
都是一些大家耳熟能詳的小游戲
素材
全部源碼:?
import os
import sys
import cfg
import pygame
from modules import *
'''游戲主程序'''
def main():
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('開心消消樂??')
# 加載背景音樂
pygame.mixer.init()
pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))
pygame.mixer.music.set_volume(0.6)
pygame.mixer.music.play(-1)
# 加載音效
sounds = {}
sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))
sounds['match'] = []
for i in range(6):
sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))
# 加載字體
font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)
# 圖片加載
gem_imgs = []
for i in range(1, 8):
gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))
# 主循環(huán)
game = gemGame(screen, sounds, font, gem_imgs, cfg)
while True:
score = game.start()
flag = False
# 一輪游戲結束后玩家選擇重玩或者退出
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
pygame.quit()
sys.exit()
elif event.type == pygame.KEYUP and event.key == pygame.K_r:
flag = True
if flag:
break
screen.fill((135, 206, 235))
text0 = 'Final score: %s' % score
text1 = 'Press <R> to restart the game.'
text2 = 'Press <Esc> to quit the game.'
y = 150
for idx, text in enumerate([text0, text1, text2]):
text_render = font.render(text, 1, (85, 65, 0))
rect = text_render.get_rect()
if idx == 0:
rect.left, rect.top = (212, y)
elif idx == 1:
rect.left, rect.top = (122.5, y)
else:
rect.left, rect.top = (126.5, y)
y += 100
screen.blit(text_render, rect)
pygame.display.update()
game.reset()
'''run'''
if __name__ == '__main__':
main()
還是直接上目錄吧~??
-
免子
-
八音符
-
外星人入侵
-
推箱子
-
俄羅斯方塊
-
飛機大戰(zhàn)
-
接金幣月餅
-
塔防
-
小恐龍
-
像素鳥
-
坦克大戰(zhàn)
-
滑雪
-
拼圖
-
走迷宮
-
炸彈人
-
打磚塊
-
乒乓球
-
24點游戲
-
寶石版本消消樂
-
吃豆豆
-
斗地主
-
大富翁
-
21點游戲
-
我的世界
-
魂斗羅
-
記憶
-
憤怒小鳥
-
掃雷
-
貪吃蛇
-
2048游戲
-
五子棋
-
打地康
-
2048
-
下一百層
-
切水果
-
數獨游戲
-
空洞機甲
-
打地鼠
-
PythonAngryBirds
-
chess 象棋
-
彩色版本飛機大戰(zhàn)
-
嗷大喵快跑代碼
-
Tom貓
-
Sokoban
-
PythonPlantsVsZombies
-
Mine-game-master
-
gluttonous-master
-
FlappyBird
-
EatBeans
-
AlD1904-game 2048-master
-
2048--master
-
21點-python-practice-master
-
貪吃蛇AI
-
中國急棋
-
冒險島
-
黃金礦工原版
-
飛機大戰(zhàn)2
-
飛船
-
大戰(zhàn)
-
蔡徐坤
-
債怒的小鳥
-
拼圖游戲
-
XiaoXiaoLe
-
超級瑪麗
-
幸運大轉盤
-
智慧校園考試系統(tǒng)
-
植物大戰(zhàn)
-
黑白飛機大戰(zhàn)
-
一只單身狗
-
小狗快跑
-
象棋
-
五子棋
-
貪吃蛇
-
忍者奔跑
-
憤怒的小鳥
-
天天跑酷
-
五子棋AI
-
超級馬里奧
-
連連看
-
植物大戰(zhàn)僵尸
-
走四棋兒
-
末世文字版本游戲
-
FlyFight宇宙激戰(zhàn)
-
泡泡躲障礙
-
打飛鳥
-
齒據氣球
-
吃水果
-
吃掉一切
-
射擊游戲
-
無敵狙擊手
-
消滅病毒小游戲
-
掃雷小游戲
-
病毒小游戲01
-
簡易版推箱子
-
簡易版塔防游戲
-
彩色版貪吃蛇
-
躲避小球
-
魷魚游戲
-
猜教字游戲升級版界面
-
自動玩俄羅斯方塊文章來源:http://www.zghlxwxcb.cn/news/detail-854297.html
?好了,大家快去拿源碼熟悉一下,下周就可以開始愉快的摸魚啦!文章來源地址http://www.zghlxwxcb.cn/news/detail-854297.html
哈嘍鐵子們
表弟最近在學Python,總是跟我抱怨很枯燥無味,其實,他有沒有認真想過,可能是自己學習姿勢不對?
比方說,可以通過打游戲來學編程!
今天給大家分享100個Python小游戲,一定要收藏!
1、簡易飛機大戰(zhàn)
飛機大戰(zhàn)相信大家都玩過吧,非常簡單有意思的游戲,咱們通過Python給它復刻出來,回味童年。
素材文件
全部源碼:
import sys
import cfg
import pygame
from modules import *
'''游戲界面'''
def GamingInterface(num_player, screen):
# 初始化
pygame.mixer.music.load(cfg.SOUNDPATHS['Cool Space Music'])
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
explosion_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['boom'])
fire_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['shot'])
font = pygame.font.Font(cfg.FONTPATH, 20)
# 游戲背景圖
bg_imgs = [cfg.IMAGEPATHS['bg_big'], cfg.IMAGEPATHS['seamless_space'], cfg.IMAGEPATHS['space3']]
bg_move_dis = 0
bg_1 = pygame.image.load(bg_imgs[0]).convert()
bg_2 = pygame.image.load(bg_imgs[1]).convert()
bg_3 = pygame.image.load(bg_imgs[2]).convert()
# 玩家, 子彈和小行星精靈組
player_group = pygame.sprite.Group()
bullet_group = pygame.sprite.Group()
asteroid_group = pygame.sprite.Group()
# 產生小行星的時間間隔
asteroid_ticks = 90
for i in range(num_player):
player_group.add(Ship(i+1, cfg))
clock = pygame.time.Clock()
# 分數
score_1, score_2 = 0, 0
# 游戲主循環(huán)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# --玩家一: ↑↓←→控制, j射擊; 玩家二: wsad控制, 空格射擊
pressed_keys = pygame.key.get_pressed()
for idx, player in enumerate(player_group):
direction = None
if idx == 0:
if pressed_keys[pygame.K_UP]:
direction = 'up'
elif pressed_keys[pygame.K_DOWN]:
direction = 'down'
elif pressed_keys[pygame.K_LEFT]:
direction = 'left'
elif pressed_keys[pygame.K_RIGHT]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_j]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
elif idx == 1:
if pressed_keys[pygame.K_w]:
direction = 'up'
elif pressed_keys[pygame.K_s]:
direction = 'down'
elif pressed_keys[pygame.K_a]:
direction = 'left'
elif pressed_keys[pygame.K_d]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_SPACE]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
if player.cooling_time > 0:
player.cooling_time -= 1
if (score_1 + score_2) < 500:
background = bg_1
elif (score_1 + score_2) < 1500:
background = bg_2
else:
background = bg_3
# --向下移動背景圖實現飛船向上移動的效果
screen.blit(background, (0, -background.get_rect().height + bg_move_dis))
screen.blit(background, (0, bg_move_dis))
bg_move_dis = (bg_move_dis + 2) % background.get_rect().height
# --生成小行星
if asteroid_ticks == 0:
asteroid_ticks = 90
asteroid_group.add(Asteroid(cfg))
else:
asteroid_ticks -= 1
# --畫飛船
for player in player_group:
if pygame.sprite.spritecollide(player, asteroid_group, True, None):
player.explode_step = 1
explosion_sound.play()
elif player.explode_step > 0:
if player.explode_step > 3:
player_group.remove(player)
if len(player_group) == 0:
return
else:
player.explode(screen)
else:
player.draw(screen)
# --畫子彈
for bullet in bullet_group:
bullet.move()
if pygame.sprite.spritecollide(bullet, asteroid_group, True, None):
bullet_group.remove(bullet)
if bullet.player_idx == 1:
score_1 += 1
else:
score_2 += 1
else:
bullet.draw(screen)
# --畫小行星
for asteroid in asteroid_group:
asteroid.move()
asteroid.rotate()
asteroid.draw(screen)
# --顯示分數
score_1_text = '玩家一得分: %s' % score_1
score_2_text = '玩家二得分: %s' % score_2
text_1 = font.render(score_1_text, True, (0, 0, 255))
text_2 = font.render(score_2_text, True, (255, 0, 0))
screen.blit(text_1, (2, 5))
screen.blit(text_2, (2, 35))
# --屏幕刷新
pygame.display.update()
clock.tick(60)
'''主函數'''
def main():
pygame.init()
pygame.font.init()
pygame.mixer.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('簡易版——飛機大戰(zhàn) ')
num_player = StartInterface(screen, cfg)
if num_player == 1:
while True:
GamingInterface(num_player=1, screen=screen)
EndInterface(screen, cfg)
else:
while True:
GamingInterface(num_player=2, screen=screen)
EndInterface(screen, cfg)
'''run'''
if __name__ == '__main__':
main()
2、寶石消消樂
都是一些大家耳熟能詳的小游戲
素材
全部源碼:?
import os
import sys
import cfg
import pygame
from modules import *
'''游戲主程序'''
def main():
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('開心消消樂??')
# 加載背景音樂
pygame.mixer.init()
pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))
pygame.mixer.music.set_volume(0.6)
pygame.mixer.music.play(-1)
# 加載音效
sounds = {}
sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))
sounds['match'] = []
for i in range(6):
sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))
# 加載字體
font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)
# 圖片加載
gem_imgs = []
for i in range(1, 8):
gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))
# 主循環(huán)
game = gemGame(screen, sounds, font, gem_imgs, cfg)
while True:
score = game.start()
flag = False
# 一輪游戲結束后玩家選擇重玩或者退出
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
pygame.quit()
sys.exit()
elif event.type == pygame.KEYUP and event.key == pygame.K_r:
flag = True
if flag:
break
screen.fill((135, 206, 235))
text0 = 'Final score: %s' % score
text1 = 'Press <R> to restart the game.'
text2 = 'Press <Esc> to quit the game.'
y = 150
for idx, text in enumerate([text0, text1, text2]):
text_render = font.render(text, 1, (85, 65, 0))
rect = text_render.get_rect()
if idx == 0:
rect.left, rect.top = (212, y)
elif idx == 1:
rect.left, rect.top = (122.5, y)
else:
rect.left, rect.top = (126.5, y)
y += 100
screen.blit(text_render, rect)
pygame.display.update()
game.reset()
'''run'''
if __name__ == '__main__':
main()
還是直接上目錄吧~??
-
免子
-
八音符
-
外星人入侵
-
推箱子
-
俄羅斯方塊
-
飛機大戰(zhàn)
-
接金幣月餅
-
塔防
-
小恐龍
-
像素鳥
-
坦克大戰(zhàn)
-
滑雪
-
拼圖
-
走迷宮
-
炸彈人
-
打磚塊
-
乒乓球
-
24點游戲
-
寶石版本消消樂
-
吃豆豆
-
斗地主
-
大富翁
-
21點游戲
-
我的世界
-
魂斗羅
-
記憶
-
憤怒小鳥
-
掃雷
-
貪吃蛇
-
2048游戲
-
五子棋
-
打地康
-
2048
-
下一百層
-
切水果
-
數獨游戲
-
空洞機甲
-
打地鼠
-
PythonAngryBirds
-
chess 象棋
-
彩色版本飛機大戰(zhàn)
-
嗷大喵快跑代碼
-
Tom貓
-
Sokoban
-
PythonPlantsVsZombies
-
Mine-game-master
-
gluttonous-master
-
FlappyBird
-
EatBeans
-
AlD1904-game 2048-master
-
2048--master
-
21點-python-practice-master
-
貪吃蛇AI
-
中國急棋
-
冒險島
-
黃金礦工原版
-
飛機大戰(zhàn)2
-
飛船
-
大戰(zhàn)
-
蔡徐坤
-
債怒的小鳥
-
拼圖游戲
-
XiaoXiaoLe
-
超級瑪麗
-
幸運大轉盤
-
智慧校園考試系統(tǒng)
-
植物大戰(zhàn)
-
黑白飛機大戰(zhàn)
-
一只單身狗
-
小狗快跑
-
象棋
-
五子棋
-
貪吃蛇
-
忍者奔跑
-
憤怒的小鳥
-
天天跑酷
-
五子棋AI
-
超級馬里奧
-
連連看
-
植物大戰(zhàn)僵尸
-
走四棋兒
-
末世文字版本游戲
-
FlyFight宇宙激戰(zhàn)
-
泡泡躲障礙
-
打飛鳥
-
齒據氣球
-
吃水果
-
吃掉一切
-
射擊游戲
-
無敵狙擊手
-
消滅病毒小游戲
-
掃雷小游戲
-
病毒小游戲01
-
簡易版推箱子
-
簡易版塔防游戲
-
彩色版貪吃蛇
-
躲避小球
-
魷魚游戲
-
猜教字游戲升級版界面
-
自動玩俄羅斯方塊
?好了,大家快去拿源碼熟悉一下,下周就可以開始愉快的摸魚啦!
到了這里,關于python游戲代碼大全可復制,python最簡單游戲代碼的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!