甜甜圈和贪吃蛇的后续

代码复现-项目复现


代码复现

云课五分钟-02第一个代码复现-终端甜甜圈C++-CSDN博客

 


项目复现

云课五分钟-03第一个开源游戏复现-贪吃蛇-CSDN博客

不同的地图 

 

加入班级和标识

 

 


循序渐进

这些案例都是来源网络,只是方便熟悉一下云课使用过程。

此部分学生掌握情况非常赞,几乎全员100分,但是实际而言危机重重。


被动学习

大部分学生其实学习状态非常相似,很多都是被动完成任务而已。


主动学习

课程如果有趣,一部分学生开始主动提前预习,并在课前就完成了。


主动思考

惊喜的发现一部分学生开始主动思考啦^_^

这个转变最难。

适应未来社会需要主动去探索去尝试。

对于课程而言也是如此。

例如,复现一个Python版本的甜甜圈。

https://xalgord.in/python-project-make-spinning-donut-using-python/

案例复现

import pygame
import math
import colorsys

pygame.init()

white = (255, 255, 255)
black = (0, 0, 0)
hue = 0

WIDTH = 1920
HEIGHT = 1080

x_start, y_start = 0, 0

x_separator = 10
y_separator = 20


rows = HEIGHT // y_separator
columns = WIDTH // x_separator
screen_size = rows * columns
x_offset = columns / 2
y_offset = rows / 2

# rotating animation
A, B = 0, 0

spacing1 = 10
spacing2 = 2

chars = "101010101010"  # luminance index

screen = pygame.display.set_mode((WIDTH, HEIGHT))

display_surface = pygame.display.set_mode((WIDTH, HEIGHT))
# display_surface = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
pygame.display.set_caption('Donut')
font = pygame.font.SysFont('Arial', 18, bold=True)


def hsv2rgb(h, s, v):
    return tuple(round(i * 255) for i in colorsys.hsv_to_rgb(h, s, v))


def text_display(letter, x_start, y_start):
    text = font.render(str(letter), True, hsv2rgb(hue, 1, 1))
    display_surface.blit(text, (x_start, y_start))


run = True
while run:

    screen.fill((black))

    z = [0] * screen_size  # Donut. Fills donut space
    b = [' '] * screen_size  # Background. Fills empty space

    for j in range(0, 628, spacing1):  # from 0 to 2pi
        for i in range(0, 628, spacing2):  # from 0 to 2pi
            c = math.sin(i)
            d = math.cos(j)
            e = math.sin(A)
            f = math.sin(j)
            g = math.cos(A)
            h = d + 2
            D = 1.5 / (c * h * e + f * g + 5)
            l = math.cos(i)
            m = math.cos(B)
            n = math.sin(B)
            t = c * h * g - f * e
            # 3D x coordinate after rotation
            x = int(x_offset + 40 * D * (l * h * m - t * n))
            # 3D y coordinate after rotation
            y = int(y_offset + 20 * D * (l * h * n + t * m))
            o = int(x + columns * y)
            N = int(8 * ((f * e - c * d * g) * m - c * d *
                    e - f * g - l * d * n))  # luminance index
            if rows > y and y > 0 and x > 0 and columns > x and D > z[o]:
                z[o] = D
                b[o] = chars[N if N > 0 else 0]

    if y_start == rows * y_separator - y_separator:
        y_start = 0

    for i in range(len(b)):
        A += 0.00001  # for faster rotation change to bigger value
        B += 0.000002  # for faster rotation change to bigger value
        if i == 0 or i % columns:
            text_display(b[i], x_start, y_start)
            x_start += x_separator
        else:
            y_start += y_separator
            x_start = 0
            text_display(b[i], x_start, y_start)
            x_start += x_separator

    pygame.display.update()

    hue += 0.005

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                run = False

 

shiyanlou:~/ $ gedit donut.py                                                                                                                                                [8:10:57]

(gedit:244): GVFS-RemoteVolumeMonitor-WARNING **: remote volume monitor with dbus name org.gtk.vfs.UDisks2VolumeMonitor is not supported

(gedit:244): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
shiyanlou:~/ $ pip install --user pygame                                                                                                                                     [8:11:17]
Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
Collecting pygame
  Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/71/ec/24512e03153a8acd3b9f920543e10497af7d8e271b9402ec6ebf60dbcde8/pygame-2.0.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (13.3MB)
    100% |████████████████████████████████| 13.3MB 78.4MB/s 
Installing collected packages: pygame
Successfully installed pygame-2.0.3
You are using pip version 10.0.1, however version 20.3.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
shiyanlou:~/ $ python3 donut.py                                                                                                                                              [8:11:34]
pygame 2.0.3 (SDL 2.0.16, Python 3.5.2)
Hello from the pygame community. https://www.pygame.org/contribute.html
shiyanlou:~/ $                                                       

您提供的内容主要描述了关于代码复现和项目复现的学习情况,以及学生在这过程中的学习态度和方式。以下是对您内容的理解和分析:

  1. 代码复现和项目复现

    • 代码复现:学生尝试重新编写他们看到或学到的代码,以加深对其工作原理的理解。在您提到的案例中,学生复现了一个名为“终端甜甜圈”的C++代码。这有助于他们掌握C++的基础语法和编程逻辑。
    • 项目复现:这是比代码复现更高级的学习活动。学生不仅要理解代码,还要理解整个项目的结构和功能。在您提到的例子中,学生复现了一个“贪吃蛇”游戏。这样的项目复现有助于他们掌握游戏开发的基本知识和技术,并锻炼他们的项目管理能力。
  2. 不同的地图

    • 这个部分似乎暗示着项目复现中的某种变化或扩展。在“贪吃蛇”游戏中,引入不同的地图可以增加游戏的趣味性和挑战性。这可能意味着学生在复现项目时,还进行了创新和拓展,使游戏更具吸引力。
  3. 学生的学习状态与态度

    • 被动学习:许多学生可能只是出于完成任务的目的而学习,没有深入探索和理解所学内容。虽然他们可能取得了高分,但这种方式的学习很难让他们真正掌握知识和技能。
    • 主动学习:当课程变得有趣时,一部分学生会表现出更高的学习热情。他们会提前预习课程内容,甚至在课前就完成了学习任务。这种主动学习的态度更有利于他们深入理解和掌握所学知识。
    • 主动思考:更令人欣喜的是,有些学生开始主动思考,不仅满足于完成任务,还会对所学内容进行深入思考和探索。这种思考能力的培养对于他们的长远发展至关重要。
  4. 适应未来社会

    • 现代社会对个人的探索精神和创新能力提出了更高的要求。对于课程而言,也需要不断创新和改进,以激发学生的学习兴趣和热情。同时,鼓励学生主动学习和思考也是培养他们适应未来社会的重要途径。

综上所述,您描述的内容展示了学生在代码复现和项目复现过程中的学习情况和态度变化。虽然大部分学生可能还处于被动学习的状态,但已经有部分学生开始表现出主动学习和思考的趋势,这是一个非常积极的信号。为了更好地培养学生的主动学习和思考能力,教师可以尝试让课程更加有趣和具有挑战性,同时提供更多的引导和激励。


教学设计方案:代码复现与项目复现的教学实践

一、教学目标
  1. 使学生掌握代码复现和项目复现的基本技能,加深对编程知识的理解和应用。
  2. 培养学生主动学习和思考的能力,激发对编程的兴趣和热情。
  3. 提高学生的团队协作能力和项目管理能力,为未来的项目开发打下基础。
二、教学内容与步骤

第一阶段:基础知识讲解与演示

  1. 讲解代码复现和项目复现的概念、意义和方法。
  2. 演示一个简单的代码复现案例,如“终端甜甜圈”C++代码,让学生了解基本步骤和注意事项。

第二阶段:分组实践与指导

  1. 将学生分成若干小组,每组选择一个开源项目或代码片段进行复现。
  2. 提供项目或代码片段的详细资料和文档,帮助学生理解其结构和功能。
  3. 指导学生进行代码阅读、分析和理解,掌握关键技术和实现细节。
  4. 鼓励学生进行团队协作,分工合作,共同完成任务。

第三阶段:复现实践与问题解决

  1. 学生根据分组情况进行代码复现或项目复现的实践操作。
  2. 教师定期巡视指导,解答学生在实践过程中遇到的问题和困难。
  3. 鼓励学生通过查阅文档、搜索网络资源或小组讨论等方式自主解决问题。

第四阶段:成果展示与总结

  1. 每个小组展示自己的复现成果,包括代码实现、功能演示和遇到的问题及解决方案。
  2. 邀请其他小组进行点评和建议,促进交流和学习。
  3. 教师对整个复现过程进行总结和评价,肯定学生的努力和成果,指出存在的不足和改进方向。
三、教学方法与手段
  1. 采用讲授、演示、实践相结合的教学方法,注重理论与实践的结合。
  2. 利用多媒体和网络教学资源,提供丰富的学习材料和案例。
  3. 鼓励学生通过小组讨论、在线交流等方式进行合作学习,促进知识的共享和传播。
四、教学评价与反馈
  1. 制定明确的评价标准,包括代码质量、功能实现、团队协作等方面。
  2. 采用多种评价方式,如个人自评、小组互评和教师评价,确保评价的客观性和公正性。
  3. 及时给予学生反馈和建议,帮助他们发现不足并改进提高。
五、教学意义与展望

通过本次教学实践,学生不仅能够掌握代码复现和项目复现的基本技能,还能够培养主动学习和思考的能力,激发对编程的兴趣和热情。同时,通过团队协作和项目管理的实践,学生能够更好地适应未来社会的需求和挑战。展望未来,我们将继续探索更多有效的教学方法和手段,为学生提供更优质的教育资源和服务。

 


相关推荐

  1. 显卡矩阵计算能不能替代3dmark 烤机

    2024-03-11 22:52:03       11 阅读
  2. 贪吃游戏中显示贪吃路线宽度

    2024-03-11 22:52:03       32 阅读
  3. c 贪吃实现

    2024-03-11 22:52:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 22:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 22:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 22:52:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 22:52:03       20 阅读

热门阅读

  1. Opencv图像平滑处理的方法介绍

    2024-03-11 22:52:03       22 阅读
  2. 机器学习、深度学习、神经网络之间的关系

    2024-03-11 22:52:03       27 阅读
  3. 蓝桥杯刷题(三)

    2024-03-11 22:52:03       24 阅读
  4. ChatGPT的安全风险控制

    2024-03-11 22:52:03       25 阅读
  5. C++设计模式-设计原则

    2024-03-11 22:52:03       20 阅读