小学生python编程写游戏_用python教小孩子编程做游戏(上)

某天,我看我的侄儿一天到晚拿着手机玩游戏,于是心怀不轨的问他想学着做游戏么?

10岁不到的他眼睛突然就放光了!

上个周五,我侄儿主动打电话给我,问我周末有空不,教他做游戏。

嘿嘿,必须有空啊。

然后周六他就自己一个人坐车到了我家,我们开始讨论。

我问他:你想做一个什么游戏呢?

他认真的思考了一下,回答我说‘我们先做一个简单点的游戏’。(教小孩子嘛,大神们清点喷)

非常的睿智啊,才9岁的孩子啊。

其实我心里早想好了思路,先给他讲解最简单的程序的逻辑,让他有一点成就感,这就是今天的目标。

所以,我告诉他我们今天先做一个只有文字的游戏,叫做钓鱼。

让我吃惊的是,他立刻开始规划:要有很多种鱼,钓到鱼可以卖钱,然后可以用钱买道具……

好吧,我理解为他玩过类似的游戏,有一些概念了。

然后,我引导他说:那要不要设计一部分机会钓不到鱼呢?比如钓起来一个炸弹?

然后我就给他讲了一个解锁炸弹的数字迷你游戏,没错,就是传说中的猜数字游戏:电脑出一个数字,玩家来猜,猜对了就炸弹解除,猜错了就提示数字太大还是太小。

我想可以让他多思考什么的。我就用下面这段代码告诉了他什么是循环和分支的逻辑

import random

class boom():

def __init__(self):

self.name = '这是一个炸弹,你需要尽快解锁密码。'

def jiesuo(self):

boom_key = random.randint(1,10)

boom_stat = 1

looptime = 1

while looptime<=3:

inkey = input('炸弹快爆炸了,赶快输入密码解除炸弹!你还有{}次机会'.format(4 - looptime))

if int(inkey) == boom_key:

boom_stat = 0

break

if int(inkey) > boom_key:

print('密码好像太大了。')

if int(inkey) < boom_key:

print('密码好像太小了。')

looptime = looptime +1

if boom_stat == 0:

print('恭喜你,解除了炸弹!')

else:

print('完蛋了,炸弹爆炸,你死了!游戏结束...')

接着就一步步引导他,鱼要随机产生,钓鱼的结果要随机产生……一起完成了这个游戏的基础框架:

# -*- coding: utf-8 -*-

"""

Created on Sat Jun 25 15:51:29 2016

@author: pcloth

钓鱼游戏

"""

import random,time,os

class boom():

def __init__(self):

self.name = '这是一个炸弹,你需要尽快解锁密码。'

def jiesuo(self):

boom_key = random.randint(1,10)

boom_stat = 1

looptime = 1

while looptime<=3:

inkey = input('炸弹快爆炸了,赶快输入密码解除炸弹!你还有{}次机会'.format(4 - looptime))

if int(inkey) == boom_key:

boom_stat = 0

break

if int(inkey) > boom_key:

print('密码好像太大了。')

if int(inkey) < boom_key:

print('密码好像太小了。')

looptime = looptime +1

if boom_stat == 0:

print('恭喜你,解除了炸弹!')

else:

print('完蛋了,炸弹爆炸,你死了!游戏结束...')

class fish():

def __init__(self):

name = [['鱿鱼',15],['草鱼',10],['鲤鱼',10]]

seed = random.randint(0,2)

self.name = name[seed][0]

self.gold = name[seed][1]

self.exp = name[seed][1]

def sell(self):

print('你卖掉了'+self.name+',得到了' + str(self.gold) + '金币。')

def diao(self):

print('你钓起来一条'+self.name)

print('你增加了{}点经验和{}个金币'.format(self.exp,self.gold))

player.exp += self.exp

player.gold += self.gold

def diaoyu():

seed = random.randint(1,100)

print('..')

time.sleep(0.5)

print('....')

time.sleep(0.5)

print('......')

time.sleep(0.5)

print('你发现浮漂一阵晃动,你赶紧收杆一看:')

if seed<=10:

print('\n天啦!居然是一个炸弹!')

bo = boom()

bo.jiesuo()

if seed>10 and seed<=60:

yu = fish()

yu.diao()

if seed>60:

sblb = ['居然什么都没有,看来是跑掉了!哎,真倒霉。',

'居然是一个苹果核,这些人太没道德了,乱丢垃圾!',

'你钓上来一只拖鞋!拖鞋!!',

'居然是一个鱼骨头,难道被大鱼吃掉了?太可怕了。'

]

print(sblb[random.randint(0,3)])

class wanjia():

def __init__(self):

self.setup()

def setup(self):

name = input('请告诉我你的名字:')

self.name = name

filename = self.name+'.txt'

if os.path.exists(filename):

print('亲爱的' + self.name + '欢迎你回到钓鱼游戏。')

f = open(filename,'r')

data = f.readlines()

self.exp = int(data[0])

self.gold = int(data[1])

f.close()

else:

print('亲爱的' + self.name + '欢迎你进入钓鱼游戏。')

self.gold = 50

self.exp = 0

input('...')

def save(self):

filename = self.name+'.txt'

f = open(filename,'w')

data = str(self.exp) + '\n' + str(self.gold)

f.write(data)

f.close()

def welcome():

print('钓鱼游戏\n\n版本:0.1\n\n作者:DXL、WZY')

print()

def caidan(player):

while 1:

print('亲爱的' + player.name + ':\

\n您目前的金币数量为:' + str(player.gold)

+'\n您目前的经验值为:' + str(player.exp))

print('\n'*16)

print('游戏菜单:')

print('1 -- 钓鱼 2 -- 查看状态 0 -- 退出')

cd = input('\n请选择菜单:')

if cd == '0':

player.save()

input('结束游戏,您的进度已经保存,期待您下次再玩。。。')

return

if cd == '1':

diaoyu()

input('...')

if cd == '2':

input('亲爱的' + player.name + ':\

\n您目前的金币数量为:' + str(player.gold)

+'您目前的经验值为:' + str(player.exp))

if __name__=="__main__":

welcome()

player = wanjia()

caidan(player)

期间:他好几次想要进入图形界面,说让我们画出动态的鱼,都被我以我们先不着急,先从最简单的开始,动态鱼的效果以后我们再来做。(好吧,其实是我自己还没做过,逃……)

所以,暂时就是上面那堆代码了,暂时的功能是:输入1钓鱼,2查看状态,0退出和保存进度

还有好多功能没完成,因为小孩子注意力集中时间较短,而且长时间对着电脑也不好。

所以,未完待续啦(啥时候继续也不知道,小孩子虽然放暑假了,但是各种补习班,各种兴趣班)

你想做游戏也可以参考一下pygame包来做游戏入门,是一个不错的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值