鱼C论坛

 找回密码
 立即注册
查看: 2869|回复: 12

[作品展示] 游戏 打砖块 测试版+过关版 (放一个目录 声音声音文件通用)

[复制链接]
发表于 2022-9-17 17:55:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 howzyao 于 2022-9-19 00:00 编辑

不废话,先上图

sshot-1.png


再上main

int main(int argc, char *argv[])
{
    PlaySound(TEXT("Ding.wav"),NULL,SND_FILENAME | SND_ASYNC|SND_LOOP);
    PlaySound(TEXT("bgm01.wav"),NULL,  SND_ASYNC|SND_LOOP   );
    PlaySound(TEXT("Ding.wav"),NULL,SND_FILENAME|SND_ASYNC);//异步,非阻塞线
    PlaySound(TEXT("nextstage.wav"),NULL,SND_FILENAME|SND_ASYNC);
    //SND_NOSTOP        PlaySound不打断原来的声音播出并立即返回FALSE,已试用,前面播放的声音有效,后来播放的声音略过效果。

/*
*/
    //FreeConsole();
    initwindow(800,600,"FramF");
    e ball(0,32,5,WHITE);              // 0==ball 1==bar 2==slug 3==block
    e bar (1,5,80,7,LIGHTGRAY,1);
    e slug(2,16,5,15,LIGHTRED,2);
    e block(3,160,45,20,1,0);




block.stageinitial(ball,bar,slug );
    while( 1 )
    {
        bar.input();
        bar.control(ball);
        bar.work(ball,block,slug);
        delay(20);

    }
    getch();
    return EXIT_SUCCESS;
}

评分

参与人数 2荣誉 +2 鱼币 +1 收起 理由
zhangjinxuan + 1 鱼C有你更精彩^_^
Hello. + 2 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-17 17:58:08 | 显示全部楼层
e0_测试版.zip (518.15 KB, 下载次数: 17)

不废话,上EXE
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 18:02:23 | 显示全部楼层
忘了上说明了,这里手动上一下:
鼠标操作,仅X轴;
红色块,板得到子弹功能;
绿色,得到吸球;
蓝色,加长,最长5次加长;
黄色,减短,最多从5减到0,原始长度的板(最短),吃了无效果
浅蓝,场景上的球翻倍,(我估计卡,就是这里出问题,却又找不出原因)
希望有坛友能给我指导方向,改进卡的原因.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 18:07:38 | 显示全部楼层
忘了上说明了,现在上:

鼠标操作,仅X轴上运动;
吃到红色块,球板得到子弹功能;
绿色,粘球,能再次发球;
蓝色,加长,最大加5次;
黄色,减短,最大从最长减5次,初始为最短,吃到黄色无效果
浅蓝,场景上的球翻倍(感觉就是卡的原因但找不到根源)

无论有没有指导,都希望大家看看,能指导一下改进卡的原因.
如有意向,请留贴,我发e类给指针人士.(主要是太长,1000行吧,怕发上来讨人嫌弃)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 18:09:29 | 显示全部楼层
退出,是直接叉之.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 18:10:36 | 显示全部楼层
忘了上说明了,现在上:
鼠标操作,仅X轴上运动;
吃到红色块,球板得到子弹功能;
绿色,粘球,能再次发球;
蓝色,加长,最大加5次;
黄色,减短,最大从最长减5次,初始为最短,吃到黄色无效果
浅蓝,场景上的球翻倍(感觉就是卡的原因但找不到根源)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 18:13:55 | 显示全部楼层
本帖最后由 howzyao 于 2022-9-17 18:19 编辑

最后,这纯属原创,主要是源自小时候FC上玩的"块砖块",靠回忆,结合学到的C,
想一步做一步的.

又忘了一个事了:里面的声音,原本不会,上网搜了一下MM的用法,就复制而来.
(就是main下的那几句,我也想深入学会,但确实不知从何学起,有会的朋友愿意交流,极大欢迎)
声音文件则是来自硬盘里搜出的WAV,直接听了一下,觉得能用,直接拉过来.改名,就用上了.

因为这不是商业行为,算侵权的话,应当不够格吧?
若有侵权,通知,我及时去掉声音.

头文件就一个:
也是网上搜的: graphics.h
和它的一个库文件: libbgi.a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-17 19:23:31 From FishC Mobile | 显示全部楼层
howzyao 发表于 2022-9-17 18:13
最后,这纯属原创,主要是源自小时候FC上玩的"块砖块",靠回忆,结合学到的C,
想一步做一步的.


用c做的啊,挺厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 21:30:32 | 显示全部楼层
wp231957 发表于 2022-9-17 19:23
用c做的啊,挺厉害
用c做的啊,挺厉害


过奖了.

源码都是很低质的遍历,我也是在想是不是这样导致了卡,正在改,尽量让对像数组只遍历一次在while中.
捆扰我的是:
当球每运一步时,它如何来知道所有的块(似乎只有把每个块都for一次)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 21:57:49 | 显示全部楼层
e ball(0,32,5,WHITE);
    e bar (1,5,80,7,LIGHTGRAY,1);
    e slug(2,16,5,15,LIGHTRED,2);
    e block(3,195,45,20,1,0);
    int inputs[3];
    int stage=1,pass_stage=1,choosen_bar=0;
    while( stage<=15 )
    {
        if(pass_stage)
        bar.stageinitial( block,ball,slug,stage,pass_stage);
        input(inputs);
        bar.control(inputs,choosen_bar);
        block.control(1);
         ball.control(2);
         slug.control(3);
        delay(20);
    }
    getch();
    return EXIT_SUCCESS;

改成了这样

void e:: control(int *in,int &iif) // bar.p[F] call to this
{
    if(iif==0)
    {
        for(int i=0;i<N;i++) //每次都遍历,不划算 加入一个开关iif 第1次循环,找一次
        {
            if(p[i].status==2 or p[i].status==1 )
            F=i;
            iif=1;
        }

    }
    else if(iif==1)
    {
         p[F].control();
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 22:02:13 | 显示全部楼层
索性把过关版也发来吧:

就是想当然地在while(1)的基础上套了一套"乱码",自己都法改,现在正在重写,重规划更好的码

while( !bar.rexit() && bar.rewin()>-1 ) //  ball.alive() && block.towin()
    {
        
        if( !bar.running(block) )
        block.stageinitial(ball,bar,slug );
        else if( bar.running(block)  )                      //block.towin()
        {
            bar.input();
            bar.control(ball);
            bar.work(ball,block,slug); // block.stagerunning( ball,bar,slug );
            
        }
        delay(20);
        // designed a pause key there can be...
        // also save it can be...
    }   
    //exited thank you for your playing...

   
   
   

    getch();
    return EXIT_SUCCESS;


e0_10关版.zip (183.13 KB, 下载次数: 2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 22:04:29 | 显示全部楼层
#include "e.h"
using namespace std;
void input(int*);
int main(int argc, char *argv[])
{
    //FreeConsole();
    initwindow(800,600,"e0 ---exit pressed the red x",300,100);
    //PlaySound(TEXT("bgm01.wav"),NULL,  SND_ASYNC|SND_LOOP   );
    e ball(0,32,5,WHITE);
    e bar (1,5,80,7,LIGHTGRAY,1);
    e slug(2,16,5,15,LIGHTRED,2);
    e block(3,195,45,20,1,0);
    int inputs[3];
    int stage=1,pass_stage=1,choosen_bar=0;
    while( stage<=15 )
    {
        if(pass_stage)
        bar.stageinitial( block,ball,slug,stage,pass_stage);
        input(inputs);
        bar.control(inputs,choosen_bar);
        block.control(1);
         ball.control(2);
         slug.control(3);
        delay(20);
    }

上面是目前手上的正在重规划的.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-17 22:06:32 | 显示全部楼层
在上面的各个控制中,如何实现对像间的"对话"?是不是要转行,投奔小甲鱼的msg做法?那个好像能随时"通知"下一行.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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