,,二十种Python代码游戏源代码分享

,,二十种Python代码游戏源代码分享

这篇文章主要介绍了二十种计算机编程语言代码游戏源代码分享,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

学计算机编程语言中,自我感觉学的还不错的亚子~想做点什么来练练手,然后我疯狂的找各种小游戏的教程源码什么的,于是我就疯狂的找呀找呀,就找到了一大堆,哈哈哈

毕竟我是从小就有一个游戏梦,现在就弥补一下自己小时候没有玩过瘾的游戏补上叭~

提示:爱学习哦,不要沉迷游戏,平时打发一下无聊时间最好啦

拿走源码的还请留言说一下好吗?不管是想学习的想转发的想干啥的,还请都点个赞说一下不,我也找的不容易呀

1、21点数字小游戏展示:

首先配置文件的源码:

'''配置文件'''

导入操作系统

# 一些常量

红色=(255,0,0)

黑色=(0,0,0)

AZURE=(240,255,255)

白色=(255,255,255)

MISTYROSE=(255,228,225)

浅绿色=(175,238,238)

PAPAYAWHIP=(255,239,213)

CURRENTPATH=os.getcwd()

font path=OS。路径。join(当前路径,' resources/font/font .TTF’)

音频winpath=OS。路径。加入(当前路径,“resources/audios/win.wav”)

AUDIOLOSEPATH=OS。路径。加入(当前路径,“resources/audios/lose.wav”)

AUDIOWARNPATH=OS。路径。加入(当前路径,“resources/audios/warn.wav”)

bgm path=OS。路径。加入(当前路径,“resources/audios/bgm.mp3”)

# 数字卡片

# - 数字卡片字体颜色

number font _ COLORS=[黑色,红色]

# - 数字卡片背景颜色

数字卡片_颜色=[米色,淡绿]

# - 数字卡片字体路径与大小

NUMBERFONT=[FONTPATH,50]

# - 数字卡片位置

NUMBERCARD_POSITIONS=[(25,50,150,200),(225,50,150,200),(425,50,150,200),(625,50,150,200)]

# 运算符卡片

# - 运算符种类

OPREATORS=[' ','-','','']

# - 运算符卡片字体颜色

OPREATORFONT _ COLORS=[黑色,红色]

# - 运算符卡片背景颜色

操作员卡_颜色=[米色,淡绿]

# - 运算符卡片字体路径与大小

OPERATORFONT=[FONTPATH,30]

# - 运算符卡片位置

OPERATORCARD_POSITIONS=[(230,300,50,50),(330,300,50,50),(430,300,50,50),(530,300,50,50)]

# 按钮卡片

# - 按钮类型

BUTTONS=['RESET ',' ANSWERS ',' NEXT']

# - 按钮卡片字体颜色

BUTTONFONT_COLORS=[BLACK,BLACK]

# - 按钮卡片背景颜色

BUTTONCARD_COLORS=[MISTYROSE,pale turquose]

# - 按钮卡片字体路径与大小

BUTTONFONT=[FONTPATH,30]

# - 按钮卡片位置

BUTTONCARD _ POSITIONS=[(25400700/3150),(50700/3400700/3150),(751400/3400700/3150)]

# 屏幕大小

屏幕大小=(800,600)

# 卡片类型

GROUPTYPES=['NUMBER ',' OPREATOR ',' BUTTON']

游戏源码:

导入操作系统

导入系统

导入pygame

来自cfg导入*

从模块导入*

从分数导入分数

'''检查控件是否被点击'''

def checkClicked(group,mouse_pos,group_type='NUMBER '):

selected=[]

# 数字卡片/运算符卡片

如果group _ type==group type[0]或group_type==GROUPTYPES[1]:

如果group _ type==group type[0]否则max _ selected=2 1

num_selected=0

对于组中的每个人:

num _ selected=int(each。被选中)

对于组中的每个人:

如果每个。直肠。碰撞点(mouse _ pos):

如果每个都被选中:

每个。is_selected=不是每个。被选中

num_selected -=1

each.select_order=无

否则:

如果选定数量最大选定数量:

每个。is_selected=不是每个。被选中

num_selected=1

每个。select _ order=str(num _ selected)

如果每个都被选中:

selected.append(每个属性)

# 按钮卡片

elif group_type==GROUPTYPES[2]:

对于组中的每个人:

如果每个。直肠。碰撞点(mouse _ pos):

each.is_selected=True

selected.append(每个属性)

# 抛出异常

否则:

提高值错误(' check clicked。group _ type不支持%s,应为%s 、%s或' %s . '% (group_type,*GROUPTYPES))

返回所选内容

'''获取数字精灵组'''

def getNumberSpritesGroup(数字):

数字精灵组=py游戏。雪碧。群组()

对于idx,枚举中的数字(数字):

args=(* number card _ POSITIONS[idx],str(数字)、数字字体、数字字体颜色、数字卡片颜色、字符串(数字))

数字精灵组。添加(卡片(*参数))

返回数字_精灵_组

'''获取运算符精灵组'''

def getOperatorSpritesGroup(运算符):

operator _ sprites _ group=py游戏。雪碧。群组()

对于idx,枚举中的运算符(运算符):

args=(*操作员卡_位置[idx],str(运算符)、OPERATORFONT、OPREATORFONT_COLORS、OPERATORCARD_COLORS、str(运算符))

操作员_精灵_组。添加(卡片(*参数))

返回操作员_精灵_组

'''获取按钮精灵组'''

def getButtonSpritesGroup(按钮):

按钮_精灵_组=py游戏。雪碧。群组()

对于idx,枚举中的按钮(按钮):

args=(* button card _ POSITIONS[idx],str(button),BUTTONFONT,BUTTONFONT_COLORS,BUTTONCARD_COLORS,str(button))

按钮_精灵_群组。添加(按钮(*参数))

返回按钮_精灵_群组

'''计算'''

定义计算(数字1,数字2,运算符):

operator_map={ ' ':' ','-': '-','' * ',/'}

尝试:

结果=字符串(eval(数字1运算符_映射[运算符]数字2))

如果".",则返回结果不在结果中其他字符串(分数(1号运算符_ map[运算符]2号))

除了:

不返回

'''在屏幕上显示信息'''

def showInfo(文本,屏幕):

rect=pygame .矩形(200,180,400,200)

pygame.draw.rect(screen,PAPAYAWHIP,rect)

font=pygame.font.Font(FONTPATH,40)

text_render=font.render(文本,真的,黑色)

font_size=font.size(文本)

screen.blit(text_render,(rect。x(矩形。width-font _ size[0])/2,rect。y(矩形。height-font _ size[1])/2))

'''主函数'''

def main():

# 初始化,导入必要的游戏素材

pygame.init()

pygame.mixer.init()

屏幕=py游戏。展示。set _ mode(屏幕大小)

py游戏。展示。set _ caption(' 24点——九歌)

win _ sound=py游戏。搅拌机。声音(音频路径)

lose _ sound=py游戏。搅拌机。声音(音频路径)

warn _ sound=py游戏。搅拌机。声音(音频警告路径)

pygame。搅拌机。音乐。加载(bgm路径)

pygame.mixer.music.play(-1,0.0)

# 24点游戏生成器

game24 _ gen=生成器()

game24_gen.generate()

# 精灵组

# - 数字

number _ sprites _ group=getnumbersprites group(游戏24 _ gen . numbers _ now)

# - 运算符

operator _ sprites _ group=getOperatorSpritesGroup(op reators)

# - 按钮

button _ sprites _ group=getbuttonsprites组(按钮)

# 游戏主循环

clock=pygame.time.Clock()

selected_numbers=[]

selected_operators=[]

selected_buttons=[]

is_win=False

虽然正确:

对于pygame.event.get()中的事件:

if event.type==pygame .退出:

pygame.quit()

sys.exit(-1)

elif event.type==pygame .鼠标按钮:

mouse_pos=pygame.mouse.get_pos()

selected _ numbers=check clicked(number _ sprites _ group,mouse_pos,' NUMBER ')

selected _ operators=check clicked(operator _ sprites _ group,mouse_pos,' OPREATOR ')

selected _ buttons=check clicked(button _ sprites _ group,mouse_pos,' BUTTON ')

屏幕填充(天蓝色)

# 更新数字

如果len(selected_numbers)==2且len(selected_operators)==1:

noselected_numbers=[]

对于数字_精灵_群组中的每个:

如果每个都被选中:

if each.select_order=='1 ':

selected _ number1=each.attribute

elif each.select_order=='2 ':

selected _ number2=each.attribute

否则:

提高值错误('未知的选择订单%s,应为一或2 . '% each.select_order)

否则:

没有选择号码。追加(每个。属性)

each.is_selected=False

对于操作员_精灵_组中的每个:

each.is_selected=False

结果=计算(选定数量1,选定数量2,*选定数量运算符)

如果结果不是无:

game 24 _ gen . numbers _ now=no selected _ numbers[结果]

is_win=game24_gen.check()

如果是_win:

win_sound.play()

如果不是is_win和len(game24_gen.numbers_now)==1:

lose_sound.play()

否则:

warn_sound.play()

selected_numbers=[]

selected_operators=[]

number _ sprites _ group=getnumbersprites group(游戏24 _ gen . numbers _ now)

# 精灵都画到屏幕上

对于数字_精灵_群组中的每个:

each.draw(screen,pygame.mouse.get_pos())

对于操作员_精灵_组中的每个:

each.draw(screen,pygame.mouse.get_pos())

对于按钮_精灵_群组中的每个:

如果['重置','下一步]中的选定_按钮和selected_buttons[0]:

is_win=False

如果选中_按钮和每个。attribute==selected _ buttons[0]:

each.is_selected=False

number_sprites_group=each。do(游戏24 _ gen,getNumberSpritesGroup,number _ sprites _ group,button_sprites_group)

selected_buttons=[]

each.draw(screen,pygame.mouse.get_pos())

# 游戏胜利

如果是_win:

showInfo(“祝贺",屏幕)

# 游戏失败

如果不是is_win和len(game24_gen.numbers_now)==1:

showInfo(“游戏结束",屏幕)

pygame.display.flip()

时钟。滴答(30)

'''跑' ' '

if __name__=='__main__ ':

主()

2、保卫森林大作战啦啦

展示:

首先配置文件的源码:

'''配置文件'''

导入操作系统

'''屏幕大小'''

屏幕大小=(800,600)

'''图片路径'''

图像路径={

选择':{

' load _ game ':OS。路径。加入(OS。getcwd(),' resources/images/choice/load _ game。png’),

' map1': os.path.join(os.getcwd(),' resources/images/choice/map 1。png’),

'地图1 _黑色':操作系统。路径。加入(OS。getcwd(),' resources/images/choice/map 1 _ black。png’),

地图1 _红色':操作系统。路径。加入(OS。getcwd(),' resources/images/choice/map 1 _ red。png’),

' map2': os.path.join(os.getcwd(),' resources/images/choice/map 2。png’),

'地图2 _黑色':操作系统。路径。加入(OS。getcwd(),' resources/images/choice/map 2 _ black。png’),

地图2 _红色:操作系统。路径。加入(OS。getcwd(),' resources/images/choice/map 2 _ red。png’),

' map3': os.path.join(os.getcwd(),' resources/images/choice/map 3。png’),

'地图3 _黑色':操作系统。路径。加入(OS。getcwd(),' resources/images/choice/map 3 _ black。png’),

地图3 _红色':操作系统。路径。加入(OS。getcwd(),' resources/images/choice/map 3 _ red。png’),

},

结束':{

'游戏结束':操作系统。路径。加入(OS。getcwd(),' resources/images/end/gameover。png’),

' continue _ red ':OS。路径。加入(OS。getcwd(),' resources/images/end/continue _ red。png’),

' continue _ black ':OS。路径。加入(OS。getcwd(),' resources/images/end/continue _ black。png’),

},

游戏':{

' arrow1': os.path.join(os.getcwd(),' resources/images/game/arrow 1。png’),

' arrow2': os.path.join(os.getcwd(),' resources/images/game/arrow 2。png’),

' arrow3': os.path.join(os.getcwd(),' resources/images/game/arrow 3。png’),

'基本_塔':操作系统。路径。加入(OS。getcwd(),'资源/图片/游戏/基础_塔。png’),

'博尔德:os.path.join(os.getcwd(),'资源/图像/游戏/博尔德。png’),

' bush': os.path.join(os.getcwd(),' resources/images/game/bush.png '),

' cave': os.path.join(os.getcwd(),' resources/images/game/cave.png '),

' dirt': os.path.join(os.getcwd(),' resources/images/game/dirt.png '),

'敌人_蓝色:os.path.join(os.getcwd(),'资源/图片/游戏/敌人_蓝色。png’),

'敌人_粉红:os.path.join(os.getcwd(),'资源/图片/游戏/敌人_粉红。png’),

'敌人_红色:os.path.join(os.getcwd(),'资源/图片/游戏/敌人_红色。png’),

'敌人_黄色:os.path.join(os.getcwd(),'资源/图片/游戏/敌人_黄色。png’),

' godark': os.path.join(os.getcwd(),' resources/images/game/godark。png’),

' golight ':OS。路径。加入(OS。getcwd(),' resources/images/game/golight。png’),

' grass': os.path.join(os.getcwd(),' resources/images/game/grass。png’),

'健康字体':OS。路径。加入(OS。getcwd(),'资源/图片/游戏/健康字体。png’),

'重_塔':OS。路径。加入(OS。getcwd(),'资源/图片/游戏/重_塔。png’),

地中海之塔:操作系统。路径。加入(OS。getcwd(),'资源/图片/游戏/med _ tower。png’),

' nexus': os.path.join(os.getcwd(),' resources/images/game/nexus。png’),

'其他草':OS。路径。加入(OS。获取CWD(),'资源/图片/游戏/其他草。png’),

' path': os.path.join(os.getcwd(),' resources/images/game/path.png '),

' rock': os.path.join(os.getcwd(),' resources/images/game/rock.png '),

' tiles': os.path.join(os.getcwd(),' resources/images/game/tiles。png’),

'单位字体':操作系统。路径。加入(OS。getcwd(),'资源/图片/游戏/单位字体。png’),

'水:os.path.join(os.getcwd(),'资源/图片/游戏/水。png’),

' x': os.path.join(os.getcwd(),' resources/images/game/x.png '),

},

暂停':{

“游戏暂停”:操作系统。路径。加入(OS。getcwd(),'资源/图像/暂停/游戏暂停。png’),

' resume _ black ':OS。路径。加入(OS。getcwd(),' resources/images/pause/resume _ black。png’),

' resume _ red ':操作系统。路径。加入(OS。getcwd(),' resources/images/pause/resume _ red。png’),

},

开始':{

' play _ black ':OS。路径。加入(OS。getcwd(),' resources/images/start/play _ black。png’),

' play _ red ':OS。路径。加入(OS。getcwd(),' resources/images/start/play _ red。png’),

' quit _ black ':OS。路径。加入(OS。getcwd(),' resources/images/start/quit _ black。png’),

' quit _ red ':OS。路径。加入(OS。getcwd(),' resources/images/start/quit _ red。png’),

' start _ interface ':OS。路径。加入(OS。getcwd(),' resources/images/start/start _ interface。png’),

},

}

'''地图路径'''

MAPPATHS={

1': os.path.join(os.getcwd(),' resources/maps/1.map '),

' 2': os.path.join(os.getcwd(),' resources/maps/2.map '),

3': os.path.join(os.getcwd(),' resources/maps/3.map '),

}

'''字体路径'''

FONTPATHS={

'卡利布':OS。路径。加入(OS。getcwd(),' resources/font/calibri。TTF’),

' m04': os.path.join(os.getcwd(),' resources/font/m04。TTF’),

微软无衬线字体。路径。加入(OS。getcwd(),' resources/font/Microsoft Sans Serif。TTF’),

}

'''不同难度的'''设置' ' '

困难路径={

' easy': os.path.join(os.getcwd(),' resources/differences/easy。JSON’),

' hard': os.path.join(os.getcwd(),' resources/differences/hard。JSON’),

' medium': os.path.join(os.getcwd(),' resources/differences/medium。JSON’),

}

游戏源码:

导入稳频发电机(发生器)(constant frequency generator的缩写)

导入pygame

从模块导入*

'''主函数'''

def main():

pygame.init()

pygame.mixer.init()

pygame.mixer.music.load(cfg .听觉路径['bgm'])

pygame.mixer.music.play(-1,0.0)

py游戏。搅拌机。音乐。set _ volume(0.25)

屏幕=py游戏。展示。设置模式(CFG .屏幕尺寸)

pygame.display.set_caption('塔防游戏—— 九歌)

# 调用游戏开始界面

start _ interface=开始接口(CFG)

is_play=start_interface.update(屏幕)

如果不是is_play:

返回

# 调用游戏界面

虽然正确:

choice_interface=选择界面(cfg)

地图_选择,差异_选择=选择_界面。更新(屏幕)

游戏_界面=游戏界面

game_interface.start(screen,map_path=cfg .MAPPATHS[str(map_choice)],难度_路径=cfg .难度路径[str(难度选择)]

end _ interface=接口

end_interface.update(屏幕)

'''跑' ' '

if __name__=='__main__ ':

主()

3、超级大的迷宫

展示:

首先配置文件的源码:

'''配置文件'''

导入操作系统

'''屏幕大小'''

屏幕大小=(800,625)

'''游戏素材'''

BGMPATH=os.path.join(os.getcwd(),' resources/audios/bgm.mp3 ')

英雄路径=OS。路径。加入(OS。getcwd(),' resources/images/hero.png ')

' ' ' FPS ' ' '

FPS=20

'''块大小'''

块大小=15

MAZESIZE=(35,50) #行数*列数

BORDERSIZE=(25,50) # 25 * 2 50 * 15=800,50 * 2 35 * 15=625

游戏源码:

导入稳频发电机(发生器)(constant frequency generator的缩写)

导入系统

导入pygame

从模块导入*

'''主函数'''

def main(cfg):

# 初始化

pygame.init()

pygame.mixer.init()

pygame.font.init()

pygame.mixer.music.load(cfg .BGMPATH)

pygame.mixer.music.play(-1,0.0)

屏幕=py游戏。展示。设置模式(CFG .屏幕尺寸)

pygame.display.set_caption('迷宫——九歌)

font=py游戏。字体。系统字体(“控制台”,15)

# 开始界面

界面(屏幕,cfg,"游戏开始")

# 记录关卡数

num_levels=0

# 记录最少用了多少步通关

best_scores='无'

# 关卡循环切换

虽然正确:

num_levels=1

clock=pygame.time.Clock()

屏幕=py游戏。展示。设置模式(CFG .屏幕尺寸)

# - 随机生成关卡地图

maze_now=RandomMaze(cfg .迷宫.块大小,cfg .边框大小)

# - 生成英雄

英雄_现在=英雄(cfg .HEROPICPATH,[0,0],cfg .块大小,cfg .边框大小)

# - 统计步数

num_steps=0

# - 关卡内主循环

虽然正确:

dt=时钟。滴答(cfg .FPS)

screen.fill((255,255,255))

is_move=False

# - 控制英雄

对于pygame.event.get()中的事件:

if event.type==pygame .退出:

pygame.quit()

sys.exit(-1)

elif event.type==pygame .按键:

if event.key==pygame .kup:

is_move=hero_now.move('up ',maze_now)

elif event.key==pygame .K_DOWN:

is_move=hero_now.move('down ',迷宫_现在)

elif event.key==pygame .K_LEFT:

is_move=hero_now.move('left ',maze_now)

elif event.key==pygame .K_RIGHT:

is_move=hero_now.move('右,迷宫_现在)

num_steps=int(is_move)

hero_now.draw(屏幕)

迷宫_now.draw(屏幕)

# - 显示一些信息

显示文本(屏幕,字体,' LEVELDONE: %d' % num_levels,(255,0,0),(10,10))

显示文本(屏幕,字体,' BESTSCORE: %s' % best_scores,(255,0,0),(210,10))

显示文本(屏幕,字体,' USEDSTEPS: %s' % num_steps,(255,0,0),(410,10))

显示文本(屏幕,字体,的:您的起点d:您的目的地',(255,0,0),(10,600))

# - 判断游戏是否胜利

if (hero_now.coordinate[0]==cfg .迷宫[1] - 1)和(hero_now.coordinate[1]==cfg .MAZESIZE[0] - 1):

破裂

pygame.display.update()

# - 更新最优成绩

if best_scores=='None ':

最佳分数=步数

否则:

如果最佳分数数量步骤:

最佳分数=步数

# - 关卡切换

界面(屏幕,cfg,mode='game_switch ')

'''跑' ' '

if __name__=='__main__ ':

主要(cfg)

.未完

太多了,好累呀!喜欢的就去资源里面下载吧大概十几二十个游戏源码

到此这篇关于二十种计算机编程语言代码游戏源代码分享的文章就介绍到这了,更多相关计算机编程语言游戏源代码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: