Python——实现格子填充

今天又给自己出了道题,需求是实现《光·遇》游戏中的格子琴谱的打印,这种琴谱是一个5*3的长方格子谱(音域是从中音do开始的十五个钢琴白键),那么需求就变成了:

1.打印一个5*3的长方形格子

2.实现向指定格子中填充内容

3.在每一层循环中给需要填充内容的行列数传参

下面是实现了这几个功能的代码:

# 定义乐谱边长
x = 26
y = 13

# 琴谱的页数
# num = 1

# 初始化
a = 0
b = 0

# 第p行第q列
# pq传参
def get_p():
    global p
    p = int(input(":"))
def get_q():
    global q
    q = int(input(":"))

# 定义打印函数
def my_print(q):
    if q == 1:
        print(' *' + ' *' * 4 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *')
    elif q == 2:
        print(' *' + ' ' * 8 + ' *' + ' *' * 4 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *')
    elif q == 3:
        print(' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' *' * 4 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *')
    elif q == 4:
        print(' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' *' * 4 + ' *' + ' ' * 8 + ' *')
    elif q == 5:
        print(' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' *' * 4 + ' *')

# 开始输出
num = int(input("请输入您的琴谱总页数:"))

# 开始循环打印
while a in range(num):
    get_p()
    get_q()
    for b in range(y):
        # if判断,筛选特殊行
        if p == 1 and (b == 1 or b == 2 or b == 3):
            my_print(q)
        elif p == 2 and (b == 5 or b == 6 or b == 7):
            my_print(q)
        elif p == 3 and (b == 9 or b == 10 or b == 11):
            my_print(q)
        elif b == 0 or b == 4 or b == 8 or b == 12:
            print(' *' * x)
        # else筛选剩余行
        else:
            print(' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *' + ' ' * 8 + ' *')
    a +=1

这个是打印了“一闪一闪亮晶晶”(1155665)的单手琴谱的效果:

请输入您的琴谱总页数:7
:1
:1
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
:1
:1
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
:1
:5
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         * * * * * *
 *         *         *         *         * * * * * *
 *         *         *         *         * * * * * *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
:1
:5
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         * * * * * *
 *         *         *         *         * * * * * *
 *         *         *         *         * * * * * *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
:2
:1
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
:2
:1
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
:1
:5
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         * * * * * *
 *         *         *         *         * * * * * *
 *         *         *         *         * * * * * *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *
 *         *         *         *         *         *
 *         *         *         *         *         *
 *         *         *         *         *         *
 * * * * * * * * * * * * * * * * * * * * * * * * * *

在写的过程中遇到了一些问题,因为刚接触python,对一些规则不熟悉,我在给pq传参时发现最终只能打印出给pq初始化时赋的值,刚开始对这种现象百思不得其解,明明刚调用完赋值函数,怎么转眼在“主函数”中就不认我刚刚赋的值呢,经过在中间疯狂print()来找错误,突然发现好像在python中没有主函数的概念,我刚刚所做的是妄图在两个平等的“函数”中去使用其中一个对另一个函数中的变量造成影响,在经过多方查证搜索之后,我找到了global函数,这个函数的作用是声明全局变量,可以满足这个题目的需求。

最后的输出效果不算良好,后续完善的话主要从以下几个方面来着手:

1.实现在十五格琴谱中实现多手和弦(在一页琴谱中填充两个或多个格子),也就是传参的时候可以同时传多个参数

2.实现横向打印,纵向的输出结果不太美观,但是这一步似乎要在完成了第一步之后才可以开始实现,因为涉及到每一横行打印多页

3.实现一页琴谱上对指法的指示性(每页填充时有多种填充方式),目的在区分这一页按键的先后顺序

你可能感兴趣的:(新手日记,python,开发语言)