标签分类 热门分类
当前位置:首页 > 儿童学编程 > 少儿学python技术文章 >

python简单的游戏制作

  • 发布时间:
  • 主题:儿童玩编程
  • 点击:182

这篇文章主要知识点是关于python、游戏制作、儿童玩编程的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

编程的乐趣:用Python解算法谜题
  • 类型:Python算法大小:67 KB格式:zip出版:人民邮电出版社作者:斯里尼·德瓦达斯
立即下载

python基础练习之几个简单的游戏

文档介绍

利用python写“猜数字”,“猜词语”,“谁是卧底”这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列表/元组/字典/流程控制/库函数等等。

环境参数

linux平台,python3.4。需要在linux中把python3.4编译一下,这样编写python程序时保存为.py格式的文件并添加执行权限再终端运行即可(原理跟shell脚本相同),非常方便。

ps:贴出来的python程序代码在windows中也兼容,只不过运行方式不是命令行,而是要通过python软件。python软件可以上官网下载安装点击打开链接,在学习的时候,可以直接在python软件上面输入python语句即可打印结果,也就是说python无需编译即可运行,很多人也称之为“脚本”语言。

设计实现

猜数字

很多人在聚餐时都玩过猜数字游戏,由某人随机出一个指定范围内的数,然后其他人一个一个猜,猜的过程中区间不断缩小,直到猜中为止。

这里的猜数字游戏就是用程序来代替那个出数字的人,程序算法设计为:

1.输入数字区间--->2.系统产生区间内的随机数--->3.玩家输入自己猜的数字--->4.比较玩家猜的与答案的高低并提示--->5.未猜中则回到3,猜中则提示猜次数

代码很少,如下所示:

#!/usr/local/bin/python3

import random

bot=int(input('Set range bottom\n'))
top=int(input('Set range top\n'))
rand=random.randint(bot,top)
print ('Random number in ['+str(bot)+','+str(top)+'] generated!')
num=int(input('###Guess the number###\n'))
cnt=1
while (num!=rand):
	if (num<rand):
		print('*_* Lower than the answer')
	else:
		print('T_T Higher than the answer')
	num=int(input('###Guess the number###\n'))
	cnt=cnt+1
print('^_^ You get the answer with [%d] times'%cnt)

第一行是要让linux系统知道这是python3程序,random是产生随机数的库函数,要注意的是python对格式要求很严格,因为它不用通过{}而是通过缩进量判断流程。

通过这个可以掌握基本的语法和编写规则了,下面再试试有点难度的,用到词组和循环控制等知识。

猜词语

电视节目中的”你来比划我来猜“大家应该都看过,而且很多人也玩过,规则就是一个人看词语比划相应动作和说一些提示,另一个人看不到词语要通过比划的动作猜出来,猜的过程中主持人判断是否符合规则。

某一组玩家猜词语的算法设计为:

1.开始计时--->2.猜词语--->3.答对则正确数加1并回到2,要跳过或犯规了则直接回到2,超时了直接跳到3--->3.循环10次后或时间结束后统计答对的题数

有num组玩家就进行以上流程的num次循环,当然也要准备x组词语,因为每组玩家猜的词语是不同的。

代码量不大,如下所示:

#!/usr/local/bin/python3

import time
num = int(input('有多少组玩家\n'))
guessWord = []
correct = []
#定义列表,num+10是不想让guessWord下标不合法
for i in range(0,num+10):
	guessWord.append(0)
	correct.append(0)
wordNum=10
guessWord[0] = ['打情骂俏','海绵宝宝','娇媚','金鸡独立','狼吞虎咽','睡眼朦胧','鹤立鸡群','手舞足蹈','卓别林','穿越火线']
guessWord[1] = ['眉飞色舞','英雄联盟','扭秧歌','偷看美女','大摇大摆','回眸一笑','市场营销','大眼瞪小眼','自恋','处女座']
guessWord[2] = ['狗急跳墙','捧腹大笑','目不转睛','愁眉苦脸','左顾右盼','宫保鸡丁','升国旗','暗恋','臭袜子','趁火打劫']

flag='n'

for i in range(0,num):
	start = time.time()
	for k in range(0,wordNum):
		#显示词语
		print (('%d.%s')%(k+1,guessWord[i][k]))
	
		flag = input('请答题,答对请输入y,跳过请输入任意键')
		end = time.time()
		sec = end-start
		#统计用时
		if (110<=sec<=120):
			print ('还有10秒钟')
		if (sec>=120):
			print ('时间到!游戏结束')
			break
		
		if (flag=='y'):
			correct[i]=correct[i]+1
			continue
		else:
			continue
	str_temp=('第%d组答对数目:%d') % (i+1,correct[i])	
	print (str_temp)
	

其实词语可以做成从独立的文件中读入的方式,这样方便更新和管理,下面就介绍一种用“字典”的方式来获得“谁是卧底”的卧底词。

谁是卧底

谁是卧底也是深受很多人喜欢的游戏,起码要三人以上才能玩,大致分为几个阶段:1.分配平民词语和卧底词语--->2.玩家依次发言--->3.根据发言投票认为谁是卧底--->4.得到票数最多的玩家出局--->5.出局玩家刚好是卧底则平民胜利,如果出局玩家是平民则被冤死并继续第2步,当剩下的平民只有1个时卧底胜利。

特殊情况是,出现两名或以上的玩家票数相同,则相同票数的玩家重新发言,然后全体针对这几个玩家投票。

程序设计思想:输入玩家数num,玩家编号为0~num-1,然后定义三个含有num个元素的列表:词语列表,计算玩家票数的列表,死亡玩家的列表。列表下标从0~num-1,随机产生该区间的数x,代表x号玩家是卧底,然后分配卧底词和平民词。注意,提示几号玩家是卧底或冤死的时候,要将打印信息时候的下标加1,比如下标数0代表的其实是1号玩家。在生活中,没多少人会习惯说自己是“第0个人”这种说法吧,除了程序员--;

在每轮游戏中,依次进行发言,投票,票数最多的玩家出局(出现相同票数则重新发言),出局玩家归入死亡玩家列表。然后开始下一轮。

那么,如果有num位玩家,则最多有多少轮游戏结束?因为进行到只有2位玩家游戏就结束了,所以答案是num-2轮!也就是说上述流程要循环num-2次。

编程思想定了就可以敲代码了,程序代码如下:

#!/usr/local/bin/python3
import random
from spyword import spyword
num=int(input('请输入玩家数(至少为3)\n'))
#卧底玩家
spy=random.randint(0,num-1)
#随机产生词语 定义词语列表 计算玩家票数的列表 统计死亡玩家的列表
list_rand=spyword.popitem()
word=[]
cnt=[]
dead=[]
#给三个列表赋值
for i in range(0,num):
	word.append('a')
	cnt.append(0)
	dead.append(num+2)
#给玩家词语 其中print是调试用的,sanmeVote是出现相同票数的标志,spyWin是卧底胜利的判决条件
for i in range(0,num):
	if (i==spy):
		word[i]=str(list_rand[1])
	else:
		word[i]=str(list_rand[0])
	print (word[i])
sameVote=0
spyWin=0
#游戏开始
for x in range(0,num-1):
	for k in range(0,num):
		if ((k not in dead) & (sameVote==0)):
			print ('%d号玩家发言时间'%(k+1))
	print ('发言环节结束')
	#将各位玩家的票数置0
	for j in range(0,num):
		if (j not in dead):
			cnt[j]=0
	for j in range(0,num):
		if (j not in dead):
			vote2p=int(input('请%d号玩家投票'%(j+1)))-1
			cnt[vote2p]=cnt[vote2p]+1
			sameVote=0
	for y in range(0,num):
		if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):
			print ('不止一位玩家得到最高票数,请这些玩家重新发言')
			sameVote=1
	if (sameVote==0):
		dead[x]=cnt.index(max(cnt))
		if (dead[x]==spy):
			print ('卧底得到最多票数,游戏结束')
			spyWin=1
			break
		print ('%d号玩家被冤死!'%(dead[x]+1))
#游戏结束
if(spyWin==0):
	print ('只剩两名玩家,卧底胜利!')

有一行代码是

from spyword import spyword 

这里spyword是我自己定义的卧底词字典,运行时把这个文件放在python的工作目录下,就可以让python程序调用该字典了。要查看python工作目录,你需要运行python后输入

>>>importos

>>>os.getcwd()

当然你也可以更改python工作目录。

python是一门简洁高效,通俗易懂的高阶动态编程语言;很多人也称之为“胶水语言”,在接到大项目时往往用python写好主体框架,然后在一些特定模块再用java/js/C++之类的语言实现特定需求。掌握python并不难,通过这篇博客讲到的三个小游戏,希望您能发现python的乐趣,快速找到python编程的窍门。

总结

以上就是本文关于python基础练习之几个简单的游戏的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python3中的列表,元组,字典,字符串相关知识小结、Python爬虫实例爬取网站搞笑段子、python实现人脸识别代码等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

以上就是本次给大家分享的关于少儿学python的全部知识点内容总结,大家还可以在下方相关文章里找到廊坊少儿编程公司 、 学习儿童机器人编程 、 儿童启蒙编程 、 k12少儿编程美国分级 、 名人名言少儿编程 、 等少儿学python相关文章进一步学习,感谢大家的阅读和支持。

上一篇:Python的一些小练习

下一篇:少年儿童为什么学编程:python

展开 +

收起 -

相关电子书
儿童玩编程相关学习笔记
网友NO.271691

python递归法实现简易连连看小游戏

问题: 简单版连连看小游戏 一个分割成w*h个正方格子的矩形板上,每个正方格子可以有游戏卡,也可以没有游戏卡 两个游戏卡之间有一条路径相连需满足以下三个条件: 1.路径只包含水平和垂直的直线段 2.路径不能穿过别的游戏卡片 3.允许路径临时离开矩形板 输入要求: 第一行包括两个整数:w 和 h ; w:矩形板的宽度,h:矩形板的长度 下面h行,每行包括w个字符,表示矩形板上卡片的分布情况:'X'代表这个地方有卡片;'O'代表无卡片 之后一行包括4个整数:X1,Y1,X2,Y2(1=X1,X2=w;1=Y1,Y2=h),代表两个卡片的位置 注意:矩形板左上角的坐标是(1,1) 输出要求: 对于每一组需要测试的游戏卡片输出: 若可以连接,找到线段最小路径,输出:k segments(k为最优路径的最小线段数) 若不可以连接,则输出"impossible" 问题分析: 程序代码: # -*- coding: utf-8 -*-"""Created on ……

网友NO.840547

python+pyqt5实现24点小游戏

本文实例为大家分享了python实现24点游戏的具体代码,供大家参考,具体内容如下 描述:一副牌中A、J、Q、K可以当成是1、11、12、13。任意抽取4张牌,用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌对应的数字必须用一次且只能用一次。在规定时间内输入算式,输入正确加十分,输入错误生命值减一,点击确定提交并进入下一题,点击清空可清空算式。点击开始游戏进入游戏,可重新开始游戏。 from PyQt5 import QtCore, QtWidgetsfrom PyQt5.QtWidgets import *from PyQt5.QtCore import QBasicTimerfrom PyQt5.QtGui import QPixmapimport sysclass Ui_Form(QWidget): def setupUi(self,Form): Form.setObjectName("Form") Form.resize(946, 515) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(70, 30, 131, 41)) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.on_click1) self.pushButton_4 = Qt……

网友NO.185793

python版微信跳一跳游戏辅助

本文实例为大家分享了微信跳一跳游戏辅助python代码,供大家参考,具体内容如下 import osimport PILimport numpyimport matplotlibmatplotlib.use('TKAgg')import matplotlib.pyplot as pltimport timefrom matplotlib.animation import FuncAnimation# 是否需要进行图片更新need_update = Truedef get_screen_image(): # 截取手机当前图片 os.system('adb shell screencap -p /sdcard/screen.png') # 拉取到PC端 os.system('adb pull /sdcard/screen.png') # 将图像转成数组返回 return numpy.array(PIL.Image.open('screen.png'))def jump_to_next(point1, point2): x1, y1 = point1; x2, y2 = point2 distance = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 # 计算按压指令和按压时长 os.system("adb shell input touchscreen swipe 320 410 320 410 %d" % (distance * 1.35))def on_clack(event, coor=[]): global need_update coor.append((event.xdata, event.ydata)) if len(coor) == 2: # 执行跳步指令 jump_to_next(coor.pop(), coor.pop()) # 进行图片刷新 need_update =……

网友NO.995323

python实现数独游戏 java简单实现数独游戏

使用python和java实现数独游戏,有比较才有收获哦。 1、Python版 #--coding:utf-8--import randomimport itertoolsfrom copy import deepcopydef make_board(m=3): numbers = list(range(1,m**2+1)) #可能出现的数字为1-9 board = None #board是数度二维列表 while board is None: board = get_board(m,numbers) return boarddef get_board(m,numbers): n = m**2 board = [[None for _ in range(n)] for _ in range(n)] for i,j in itertools.product(range(n),repeat=2): i0,j0 = i-i%m,j-j%m # i,j分别代表的是我们的行和列 # i0和j0代表的是board[i][j]所在的区块的起始位置 random.shuffle(numbers) #shuffle() 方法将序列的所有元素随机排序。 for x in numbers: if(x not in board[i] and all(row[j]!=x for row in board) and all(x not in row[j0:j0+m] for row in board[i0:i])): board[i][j] = x break else:#当循环正常结束时会执行else return None return boarddef print_board(board,m=3): numbers = list(range(1,m**2+1)) #每一行随机把5个数字变成Non……

网友NO.819565

python和pygame实现简单俄罗斯方块游戏

本文为大家分享了python实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下 Github:Tetris 代码: # -*- coding:utf-8 -*-import pygame, sys, random, copyfrom pygame.locals import *pygame.init()CubeWidth = 40CubeHeight = 40Column = 10Row = 20ScreenWidth = CubeWidth * (Column + 5)ScreenHeight = CubeHeight * RowScreenSize = (ScreenWidth, ScreenHeight)Screen = pygame.display.set_mode(ScreenSize, 0, 32)pygame.display.set_caption("Ly's Tetris")pygame.mixer.music.load('BackgroundMusic.ogg')pygame.mixer.music.play(-1, 0.0)ClickMusic = pygame.mixer.Sound('ClickMusic.wav')ExplodeMusic = pygame.mixer.Sound('Explode.wav')BackgroundImg = pygame.image.load('BackgroundImg.png').convert()PreImg = pygame.image.load('PreImg.png').convert()PStartImg = pygame.image.load('PStartImg.png').convert()ResultPreImg = pygame.image.load('GameResultPreBgImg.png').convert()RestartImg = pygame.image.load('GameResultRestBgImg.png').convert()ScoreHintFont = pygame.font.SysFont('aria……

<
1
>

Copyright 2018-2021 www.xz577.com 码农之家

版权投诉 / 书籍推广:520161757@qq.com