当前位置:   article > 正文

python项目之超级大脑_超级大脑代码解释是什么

超级大脑代码解释是什么

超级大脑

程序说明

我们已经为你准备了程序模板:memory.py,模板中导入了必要的模块和一些全局变量,你需要编写一些函数,实现这个游戏。

通过该项目你可以巩固对鼠标事件驱动编程,函数和列表的理解。
在这里插入图片描述
我们推荐了两种数据结构来表示一组牌,如图2所示,模板中用的是第一种。我们用一个列表表示一组牌,其中每个牌再用一个列表表示,子列表中第一个元素是牌面文字,第二个元素取值为0或1,0表示牌未翻过来,反之用1表示。该数据结构如图2中分割线以上所示。在分割线以下是另一种表示,即采用两个列表,第一个保存牌面文字,游戏中不变化,第二个保存牌是否翻过来,0和1的含义与第一种数据结构相同,取值随着游戏中对牌的点击发生变化。图2中假设第一张牌是“A”但是未被翻过来,所以子列表中第二个元素为0。其它牌未知,用“…”表示。

游戏首先运行的函数是new_game(),该函数负责初始化全局变量,包括:初始化表示一组牌的列表cards,清空(调用列表的clear方法)保存翻过来的牌的列表flipped_cards,将翻牌次数steps置零。

初始化cards的函数是init_cards()(如果你采用第二种数据结构,还需要自己定义一个列表),该函数的功能是从all_characters里取四个字母,构造成[‘A’, 0]这种形式放进cards里,每个字母放两次,最后打乱cards列表。

draw()函数根据cards的内容把牌绘制在游戏界面中,你需要根据牌的次序计算多边形或文字的位置。翻牌次数也要通过draw函数显示。

鼠标点击事件的驱动函数是mouse_click,游戏功能主要在该函数中实现。该函数的参数是pos,它是一个元组,记录了鼠标点击处所在画布的坐标,你需要根据该坐标计算玩家点击的是哪张牌。该张牌是否翻过来,已经翻过几张牌,翻过的牌面文字是否相同等等游戏逻辑需要你细心设计。
在这里插入图片描述
注意:文字在画布上的坐标是其左下角的坐标,如图3所示。

编码步骤

点击添加Bookmark this page
(1)编写draw函数中显示牌的部分。牌用多边形(长方形)绘制,翻过来的牌在绘制完长方形后还要在适当的位置绘制牌面文字。长方形和文字的坐标需要根据牌的次序和CARD_WIDTH、CARD_HEIGHT这两个全局变量计算。可以先手工设计cards列表的内容,检查你的代码能否把正反面的牌都显示出来。

(2)编写mouse_click函数。根据pos参数的横坐标判断点击的是哪张牌,确定了点击的牌后就需要根据flipped_cards里记录的内容判断是否能够翻开这张牌。每次翻开牌都要增加步数。游戏逻辑主要在该函数里完成。

(3)在draw函数里补充显示步数的代码。

项目模板

# -*- coding: utf-8 -*-
import simpleguitk as simplegui
import random
import math

# 画布的尺寸
WIDTH = 480
HEIGHT = 150

# 牌的尺寸
CARD_WIDTH = 60
CARD_HEIGHT = 100

cards = []  # 保存4对牌的列表
flipped_cards = []  # 记录翻过的牌
steps = 0


# 初始化一组字母牌
def init_cards():
    global cards
    all_characters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
                      'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    cards.clear()
    random.shuffle(all_characters)
    for i in range(4):
        one_card = all_characters.pop()
        # 注意:cards中的元素也是列表。该列表的第一个元素是某个字母,
        # 第二个元素表示该牌是否被翻过来,0表示没翻过来,1表示翻过来。
        cards.append([one_card, 0])
        cards.append([one_card, 0])
    random.shuffle(cards)


def new_game():
    global steps
    flipped_cards.clear()
    steps = 0
    init_cards()


def draw(canvas):
    # 代码写在这里
    pass
    # 步骤1:绘制牌

    # 步骤3: 显示步数


def mouse_click(pos):
    global steps, cards, flipped_cards
    # 步骤2: 实现游戏主要逻辑
    pass


# 创建用户界面
frame = simplegui.create_frame("超级大脑", WIDTH, HEIGHT)
frame.set_canvas_background("Black")
frame.set_draw_handler(draw)
frame.set_mouseclick_handler(mouse_click)

# 创建按钮
frame.add_button("开始游戏", new_game, 80)

new_game()
frame.start()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

项目实验代码获取

关注微信公众号地信小嘉,回复超级大脑,文章末即有详细的运行代码

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号