某天,我看我的侄儿一天到晚拿着手机玩游戏,于是心怀不轨的问他想学着做游戏么?
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包来做游戏入门,是一个不错的选择。