回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

弹弹球小游戏__怀念那个没有智能机的时代 简单

头像 _深蓝_ 2023.10.13 153 1

弹弹球小游戏__怀念那个没有智能机的时代

 

v2-5b1cdaf5e33916b7f355e7dc12dee906_1440w.png

 

 作为80后的我们,越来越多的怀念过去,在80年代,我国的电子游戏业经历了从无到有、快速发展的历程。在80年代初,电子游戏的概念刚刚传入中国,国内的游戏市场还处于萌芽状态。随着改革开放的深入,国外的一些电子游戏机和游戏开始进入中国市场,逐渐引起了一些国内企业的关注和兴趣。

在这个时期,一些国内企业开始尝试自主研发电子游戏。1984年,我国第一款自主研发的电子游戏《反弹球》诞生。这款游戏是由北京大学的学生设计的,它基于Apple II计算机平台,采用了简单的图形和音效,但具有很强的趣味性和挑战性。今天,使用卡片大小的行空板可以完成这款童年的游戏,何乐而不为呢。

《反弹球》游戏的玩法非常简单,玩家需要通过控制挡板的位置,使小球在屏幕上反弹,并尽可能多地击中屏幕上的目标。游戏难度随着关卡的增加而逐渐提高,需要玩家不断提高自己的反应速度和操作技巧。

 

使用硬件

 

行空板     1块

 

游戏画面设计思维导图

 

xz03.jpg

 

进行中的游戏画面元素为自动运动的弹力球和手动控制的挡板

按A挡板上移

按B挡板下移

xz02.jpg

注:行空板屏幕分辨率为240x320,因此unihiker库分辨率也为240x320,坐标原点为屏幕左上角,向右为x轴正方向,向下为y轴正方向。

551e855e9cc56c73327cbfb02174eff6.png

程序设计

1.游戏初始化程序

图片.png

定义一个初始化界面的函数,分别展示欢迎语句 ,并选择难易程度,点击不同的难易程度,出现不同速度的小球。如果不点击默认6秒后小学生级别的难度挑战。

每个级别的按钮都对应不同的回调函数,回调函数修改小球移动的速度值。

图片.png

 

2.游戏运行中程序

jp.jpg

该程序中定义了多个变量

l:调节移动挡板和小球移动速度的倍数。

s:游戏得分。

x:小球的横坐标。

y:小球的纵坐标。

x1:小球每个循环移动的横向像素数。

y1:小球每个循环移动的纵向像素数。

rx:挡板的长方形顶点。

该程序中,每隔0.1秒小球移动l个像素,程序中分别设计了小球碰到上下和左边边界弹回,只有碰到右边的挡板得分,如下所示。

图片.png

每次循环后还要更新下小球、挡板的位置以及得分的分值,程序如下所示:

图片.png

 

 

3.程序结束画面

 

小球碰到右边边界,并未碰到挡板时,游戏结束,这里有个检测小球是否碰到挡板的逻辑表达式

图片.png

游戏结束时,展示该轮游戏得分,并展示相应的表情。

程序如下:

图片.png

完整的python代码:

代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from unihiker import GUI
import time

# 自定义函数
def ChuShiHua():
    xx=u_gui.draw_text(text="欢迎来到弹弹球游戏,选择游戏难度。",x=0,y=0,font_size=20, color="#0000FF")
    easy=u_gui.add_button(text="小学森级",x=0,y=30,w=80,h=30,onclick=button_click1)
    easy=u_gui.add_button(text="大学森级",x=0,y=70,w=80,h=30,onclick=button_click2)
    easy=u_gui.add_button(text="jiao兽级",x=0,y=110,w=80,h=30,onclick=button_click3)
    x1x=u_gui.draw_text(text="6秒后以小学生开始游戏.......",x=0,y=150,font_size=20, color="#0000FF")
    time.sleep(6)

# 事件回调函数
def on_buttona_click_callback():
    global rx
    rx = (rx - (l * 2))
    if (rx <= 0):
        rx = 0
def on_buttonb_click_callback():
    global rx
    rx = (rx + (l * 2))
    if (rx >= 290):
        rx = 290
def button_click1():
    global l
    l = 1
def button_click2():
    global l
    l = 4
def button_click3():
    global l
    l = 8


u_gui=GUI()
u_gui.on_a_click(on_buttona_click_callback)
u_gui.on_b_click(on_buttonb_click_callback)
ChuShiHua()
l = 3
s = 0
x = 63
y = 31
x1 = 1
y1 = -1
rx = 50
u_gui.clear()
rec=u_gui.fill_rect(x=238,y=rx,w=2,h=30,color="#0000FF")
score=u_gui.draw_text(text=(str("本局得分:") + str(s)),x=0,y=0,font_size=20, color="#0000FF")
circle=u_gui.draw_circle(x=x,y=y,r=3,width=1,color="#0000FF")

while True:
    time.sleep(0.1)
    score.config(text=(str("本局得分:") + str(s)))
    rec.config(y=rx)
    circle.config(y=x)
    circle.config(x=y)
    x = (x - (l * x1))
    y = (y - (l * y1))
    if ((x <= 2) or (x >= 320)):
        x1 = (x1 * -1)
    if (y <= 2):
        y1 = (y1 * -1)
    if (y >= 238):
        if ((x >= (rx - 0)) and (x <= (rx + 30))):
            s = (s + 1)
            y1 = (y1 * -1)
        else:
            u_gui.clear()
            zcj=u_gui.draw_text(text="总成绩为: %1.0f分!"%(s),x=0,y=0,font_size=20, color="#0000FF")
            if (s < 10):
                wx=u_gui.draw_emoji(emoji="Angry",x=0,y=50,duration=0.2)
            elif (s < 20):
                wx.config(emoji="Sweat")
            elif (s < 30):
                wx.config(emoji="Smile")

 

运行效果

 

 

不足与改进

“deadline是生产力”,这句话说得好,临近限期才想到做这个,前期准备不算太充分吧!

本例子中的不足有以下几点:

1、缺少一些美工的元素,例如漂亮的背景,前景等。

2、没加入炫酷的音乐和振奋人心的音效。

3、还缺少游戏结束后重新游戏的选项,因能力有限,继续学习。

 

附件

 

评论

user-avatar
  • _深蓝_

    _深蓝_2023.10.27

    好的

    0