QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9992|回复: 27

llk_linux V1.0发布

[复制链接]
发表于 2005-5-15 19:32:10 | 显示全部楼层 |阅读模式
项目主页
http://llk-linux.sourceforge.net

2005年4月29日
1.将algorithm_get_points函数产生的链表进行倒序
2.修改algorithm_can_link,添加两个point指针参数,使它在不是直线连接的情况下返回折点位置.并修改llk_main中对该函数的调用.
3.添加函数ui_link和ui_draw_line函数,完成连线功能.并在鼠标电击回调函数中的消牌操作之前,调用此函数.为了看到连线,需要加入时间延迟100ms.
2005年5月15日
1.大改,大致内容如下(很多细节,不一一说明)
将GtkFixed换做GdkDrawingarea
完全控制drawingarea的绘图操作,实用doublebuf,建立一个pixbuf,所有游戏的绘图操作只针对pixbuf,
只有在需要重绘窗口的时候简单的将pixbuf拷贝到drawingarea中.
2.连线功能完成!之前的ui_link函数中有笔误,if判断应该p3.x与p4.x(误为p3.x)
3.完善了内存管理,所有需要释放的pixbuf均及时释放.
4.作弊选项,按F8可填满时间,提示和生命.
5.自选牌面
6.添加icon.
修复的小bug:
1.drawingarea_clicked函数中,将ui_link放在algorithm_link之前。
2.ui_game_wash中,生命值用完,结束游戏后,添加return。
===============================待完善功能=================================
1.声音,音乐
2.随机背景
3.网络对战
4.记分系统
 楼主| 发表于 2005-5-15 19:38:13 | 显示全部楼层
公社下载
http://linuxfans.org/nuke/modules.php?name=Site_Downloads&op=geninfo&did=3552
回复

使用道具 举报

发表于 2005-5-15 20:24:15 | 显示全部楼层
正在下载……
回复

使用道具 举报

发表于 2005-5-16 13:36:33 | 显示全部楼层
双人合作模式什么时候能够实现,这样就可以一台电脑两人同时玩了。
回复

使用道具 举报

 楼主| 发表于 2005-5-16 15:04:10 | 显示全部楼层
下一版,会添上。
双人合作。背景音乐,声效

不过要等段时间,因为我还不知道怎么播放声音(因为不想使用gnome,ML1.2不带gnome的)
回复

使用道具 举报

发表于 2005-5-16 17:41:21 | 显示全部楼层
那就不忙加声音,可以边玩边听mp3吗:)声音可以试试sdl_mixer
回复

使用道具 举报

 楼主| 发表于 2005-5-17 14:32:50 | 显示全部楼层
背景音乐可以不加,但是音效还是需要的。
既然音效要加,再加上背景音乐,也没什么麻烦的了
呵呵
多谢楼上的指教,刚看了sdl,用起来挺方便的
回复

使用道具 举报

发表于 2005-5-18 12:51:48 | 显示全部楼层
回复

使用道具 举报

发表于 2005-5-27 00:53:43 | 显示全部楼层
不错,这几天正在WINDOWS下玩,没想到今晚竟然在论坛上看见一个专版,兴奋至极.
强烈支持,预祝超越WINDOWS版.
回复

使用道具 举报

 楼主| 发表于 2005-5-27 01:09:45 | 显示全部楼层

多媒体效果能比上windows版就不错了(到现在声音问题都还没解决)
不过网络队战方面,打算在2.0版能做的比较好。
像QQ的连连看那样支持5人一起队战那种。
努力中…………
回复

使用道具 举报

发表于 2005-5-30 16:18:04 | 显示全部楼层
[quote:82f1b0fba8="alpher"]下一版,会添上。
双人合作。背景音乐,声效

不过要等段时间,因为我还不知道怎么播放声音(因为不想使用gnome,ML1.2不带gnome的)[/quote]
你看看/usr/include/esd.h文件,胡正的黑客背单词就是用这个实现音效的,但他用的是C++。
黑客背单词中的sndserv.h
[code:1]#ifndef __RW_SNDSERV_H__
#define __RW_SNDSERV_H__

#include <glib.h>

enum PLAY_METHOD {PM_MIX,PM_STOP_PRE,PM_AFTER_PRE};

class CSndserv
{
        int fd;

      public:
        gboolean disable;
        bool canplay;
          CSndserv ();
         ~CSndserv ();
        void play (const gchar *filename);
};

void play_file(const gchar *filename,PLAY_METHOD method);

#endif
[/code:1]
黑客背单词中的sndserv.cpp
[code:1]#include "sndserv.h"
#include "reciteword.h"
#include <cstdio>
#include <cstdlib>

#ifdef G_OS_WIN32
    #include "windows.h"
#else
        #include <esd.h>
#endif

extern CReciteWord* g_pReciteWord;

CSndserv::CSndserv()
{
#ifdef G_OS_WIN32
        canplay = true;
#else
        fd=esd_open_sound(NULL);//"localhost";
        canplay = (fd>=0);
#endif
        if (!canplay)
                g_print("esd initialization failed,no sound will be play!\n");
}

CSndserv::~CSndserv()
{
#ifdef G_OS_WIN32
#else
        if (fd>=0) esd_close(fd);
#endif
}

void
CSndserv::play(const gchar *filename)
{
#ifdef G_OS_WIN32
#else
        if (fd>=0)
                esd_play_file(NULL,filename,0); // ???
                //esd_play_file ("reciteword", filename, 1);
#endif
}

//static CSndserv sndserv;

static gpointer play_file_mix(gpointer data)
{
        g_pReciteWord->sndserv.play((gchar *)data);
        g_free(data);
        return NULL;
}

/*
static void play_file_after_pre(gpointer data,gpointer user_data)
{
        g_pReciteWord->sndserv.play((gchar *)user_data);
        return NULL;
}

class CThreadPool
{
        GThreadPool *pool;
public:
        CThreadPool();
        ~CThreadPool();
};

CThreadPool::CThreadPool()
{
        pool = g_thread_pool_new(play_file_after_pre,NULL,1,FALSE,NULL);
}

CThreadPool::~CThreadPool()
{
        g_thread_pool_free(pool,);
}
*/


void play_file(const char *filename,PLAY_METHOD method)
{
        if ((!g_pReciteWord->sndserv.canplay)||(g_pReciteWord->sndserv.disable))
                return;

        //esd_play_file ("reciteword", filename, 1);  //it can't return quickly :( when in typing,press wrong key will cause freezing.
               
        // the system() function is inefficiency, should change to use thread to call esd_play_file().
        /*gchar command[256];
        sprintf(command,"esdplay %s &",filename);
        system(command);*/
       
        switch (method)
        {
                case PM_MIX:
                {
#ifdef G_OS_WIN32
            PlaySound(filename, 0, SND_ASYNC | SND_FILENAME);
#else
                        GThread * thread;
                        gchar *dup_filename = g_strdup(filename); //as in the new thread, filename may have already be freeed.
                        thread = g_thread_create(play_file_mix,(gpointer)dup_filename,false,NULL);  //use GThreadPool may be more efficient.
#endif
                        break;
                }
                case PM_STOP_PRE:   // it is hard to done,may need write my own esd_play_file.
                {
                        break;
                }
                case PM_AFTER_PRE:  // use GThreadPool can do this,but,it does seems very useful before PM_STOP_PRE is done.
                {
                        //GThreadPool *threadpool;
                       
                        break;
                }
        }
}
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-5-30 16:49:00 | 显示全部楼层
多谢,非常感激!
回复

使用道具 举报

发表于 2005-6-2 09:10:19 | 显示全部楼层
简单的音乐播放示例:
#include <glib.h>
#include <esd.h>

gint fd;
gboolean disable;
gboolean canplay;

void play(const gchar *filename)
{
        if (fd>=0)
                esd_play_file(NULL,filename,0);
}
int main( int   argc,
          char *argv[] )
{
            fd=esd_open_sound(NULL);//"localhost";
        canplay = (fd>=0);
        if (!canplay)
                g_print("esd initialization failed,no sound will be play!\n");
        play("/home/yetist/Projects/chord.wav");
        if (fd>=0) esd_close(fd);
    return 0;
}

编译用:
gcc -o snd sndtest.c `pkg-config gtk+-2.0 --cflags --libs` -lesd
回复

使用道具 举报

 楼主| 发表于 2005-6-2 11:58:32 | 显示全部楼层
这个只能播放wav文件吧,
我看SDL的文档的时候也没有看到它支持midi
而播放背景音乐,要用midi
回复

使用道具 举报

 楼主| 发表于 2005-6-2 11:59:24 | 显示全部楼层
楼上有兴趣加入开发吧
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-21 21:12 , Processed in 0.072948 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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