鱼C论坛

 找回密码
 立即注册
查看: 2818|回复: 3

[学习笔记] 【第036讲心得】【类和对象:猜拳小游戏展示】

[复制链接]
发表于 2018-12-4 08:11:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 heidern0612 于 2018-12-17 10:19 编辑

写心得的过程都是自我思考的过程,借鉴了很多论坛前辈大神们的经验,如有疏漏或错误,恳请指出,不胜感激。


1、关于对象和类的含义:


对象 = 属性(特征)+方法(行为)


类:在python中,把具有相同属性和方法的对象归为一个类(class)


百度百科上说: 对象是对客观事物的抽象,类是对对象的抽象。

第一句怎么理解,因为在计算机的里没有客观事物的,所以只能将这些客观事物做一个抽象,用一些属性和行为表示他们;

第二句怎么理解,这些属性在忽略特定值的情况下,可以将他们化为一类,那么这就是类。


老师讲的东西都比较简单,我就不多介绍了


2、给个借鉴大神的小游戏:

PS:找错误找了一天,卧槽好像哪也没出错啊,来回排查不下十遍,找的眼花...

第二天早上的时候,用IDLE排查,最后发现结尾的print少了个括号...我OOXX个E!

  1. #玩家和电脑猜拳游戏
  2. #选择角色1 小甲鱼 2海顿上校  3 玩家输入的名字
  3. #角色猜拳1剪刀 2石头 3布 玩家输入一个1-3的数字
  4. #电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果,本局对战结果...赢...输,是否继续?
  5. #输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束
  6. import random

  7. class Character():                                                                                        #定义角色
  8.         def __init__(self):
  9.                 print("-----------野球拳大战-------------\n")
  10.                 name=""
  11.                 temp = input("请输入你的大名:")
  12.                
  13.                 while True:
  14.                         game_character = input(f"请选择你的角色:\n\n1--小甲鱼 2--海顿上校 3--{temp}--->:")
  15.                         if game_character.isdigit():
  16.                                 game_character = int(game_character)
  17.                                 if game_character == 1:
  18.                                         print("玩家角色为---小甲鱼")
  19.                                         self.name = "小甲鱼"
  20.                                         break
  21.                                 elif game_character == 2:
  22.                                         print("玩家角色为---海顿上校")
  23.                                         self.name = "海顿上校"
  24.                                         break
  25.                                 elif game_character == 3:
  26.                                         print(f"玩家角色为---{temp}")
  27.                                         self.name = temp
  28.                                         break
  29.                                 else:
  30.                                         print("----角色选择错误,请重新进行选择----\n")
  31.                         else:
  32.                                 print("----输入角色有误!请重新输入人物序号----\n")
  33.                
  34.                
  35.         def pick_up(self):                                                                                #定义玩家选择
  36.                 while True:
  37.                         player_select = input("请输入要出拳的选项:\n1---石头; 2---剪刀; 3---布 :")
  38.                         if player_select.isdigit():
  39.                                 player_select = int(player_select)
  40.                                 if player_select == 1:
  41.                                         print("玩家选择出---石头", )
  42.                                         break
  43.                                 elif player_select == 2:
  44.                                         print("玩家选择出---剪刀")
  45.                                         break
  46.                                 elif player_select == 3:
  47.                                         print("玩家选择出--- 布")
  48.                                         break
  49.                                 else:
  50.                                         print("选择错误!请重新选择!:",end = " ")
  51.                         else:
  52.                                 print("输入数字不正确!请重新输入!:",end = " ")
  53.                 return player_select

  54. class Computer():                                                                #电脑随机出数
  55.         def random_select(self):
  56.                 select_number = random.randint(1,3)
  57.                 if select_number == 1:
  58.                         print("电脑选择出---石头")
  59.                 elif select_number == 2:
  60.                         print("电脑选择出---剪刀")
  61.                 else:
  62.                         print("电脑选择出--- 布")
  63.                 return select_number


  64. class Progress ():                                        #主程序判断
  65.     guesstime1 = 0
  66.     guesstime2 = 0
  67.     guesstime3 = 0
  68.     def __init__(self):
  69.         crct = Character()      
  70.         cmpt = Computer()           
  71.         while True:
  72.             player_result = crct.pick_up()
  73.             computer_result = cmpt.random_select()
  74.             if (player_result == 1 and computer_result == 2 )or \
  75.                (player_result == 2 and computer_result == 3 )or \
  76.                (player_result == 3 and computer_result == 1 ):
  77.                 print("---玩家赢---!")
  78.                 self.guesstime1 += 1
  79.             elif player_result == computer_result:
  80.                 print("---平局!---")
  81.                 self.guesstime3 += 1
  82.             else:
  83.                 print("---电脑赢!---")
  84.                 self.guesstime2 += 1
  85.             if input("**********是否继续?(n键退出,任意键继续)**********").lower()=="n":
  86.                 break
  87.         if self.guesstime1 > self.guesstime2:
  88.             final_result="玩家胜利!"
  89.         elif self.guesstime1 == self.guesstime2:
  90.             final_result="平---局!"
  91.         else:
  92.             final_result ="电脑胜利!"
  93.         print("-----------------野球拳大战----------------\n游戏结束 :\n"
  94.             f"玩家共赢{self.guesstime1}次---电脑共赢{self.guesstime2}次---平局次数{self.guesstime3}次\n————总结果为 : {final_result}")

  95. gamestart = Progress()
复制代码




评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
13572044595 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-12-9 09:55:03 | 显示全部楼层
本帖最后由 13572044595 于 2018-12-9 09:58 编辑

以下两句没看懂,求解答:

[b]15行[/b]    game_character = input(f"请选择你的角色:\n\n1--小甲鱼 2--海顿上校 3--{temp}--->:")
[b]89 行[/b]   if input("**********是否继续?(n键退出,任意键继续)**********").lower()=="n":
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-9 09:59:56 | 显示全部楼层
13572044595 发表于 2018-12-9 09:55
以下两句没看懂,求解答:

15行    game_character = input(f"请选择你的角色:\n\n1--小甲 ...

15行的花括号里的TEMP就是上面玩家input输入的名字,前面的f是格式化字符串。

89行后面的.lower()是把输入的内容转换为小写,如果等于"n"就退出,意思就是不管你输入的大写还是小写,转换的都是小写。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-9 10:19:45 | 显示全部楼层
本帖最后由 13572044595 于 2018-12-9 10:21 编辑
heidern0612 发表于 2018-12-9 09:59
15行的花括号里的TEMP就是上面玩家input输入的名字,前面的f是格式化字符串。

89行后面的.lower()是把 ...


知道有这些功能,但是不知道还能这样用,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-2 14:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表