论坛: 编程破解 标题: C的魅力 复制本贴地址    
作者: lida1818 [lida1818]    论坛用户   登录




#include<math.h>
#include<mem.h>
#include<dos.h>
#include<stdlib.h>

#define p_num 2000

struct _Particle
{
    float vx,vy,ax,ay,x,y;
    unsigned char c;
};

void SetColor(int c,int r,int g,int b)
{
    outportb(0x3c6,255);
    outportb(0x3c8,c);
    outportb(0x3c9,r>>2);
    outportb(0x3c9,g>>2);
    outportb(0x3c9,b>>2);
}

char far *GetBuffer(long x,long y)
{
    return (char far *)(0xa0000000L+x+y*320);
}

void blur()
{
    unsigned char far *p, far *q;
    for(p=GetBuffer(1,1),q=GetBuffer(318,198);p<q;p++) *p=*(p-1)+*(p+1)+*(p-320)+*(p+320)>>2;
}

void main()
{
    struct _Particle pg[p_num];
    float fcos,fsin,t=0.01,angle=0.0;
    float RGB[256][3];
    int i;
    int dx,dy;

    memset(pg,0,p_num*sizeof(struct _Particle));
    for(i=0;i<p_num;i++)
    {
        pg[i].x=160;
        pg[i].y=100;
        pg[i].c=255;
        pg[i].ax=rand()%10191/1000.0-5;
        pg[i].ay=rand()%8191/1000.0-4;
    }
    for(i=0;i<256;i++) RGB[i][0]=sqrt(i)/16.0;
    for(i=0;i<256;i++) RGB[i][1]=pow(i,0.7)/48.5;
    for(i=0;i<256;i++) RGB[i][2]=(i*i)/65536.0;

    _AX=0x13;
    asm int 0x10;

    for(i=0;i<256;i++) SetColor(i,RGB[i][0]*256,RGB[i][1]*256,RGB[i][2]*256);

    while(inportb(0x60)!=1)
    {
        fcos=cos(angle);
        fsin=sin(angle);
        for(i=0;i<p_num;i++)
        {
            pg[i].vx+=pg[i].ax*t;
            pg[i].vy+=pg[i].ay*t;
            pg[i].x+=pg[i].vx*t;
            pg[i].y+=pg[i].vy*t;
            dx=(pg[i].x-160)*fcos-(100-pg[i].y)*fsin+160;
            dy=(pg[i].x-160)*fsin+(100-pg[i].y)*fcos+100;
            if(dx>0&&dx<319&&dy>0&&dy<199) *GetBuffer(dx,dy)=pg[i].c;
            if(dx<0||dx>=320) pg[i].vx=-pg[i].vx;
            if(dy<0||dy>=200) pg[i].vy=-pg[i].vy;
        }
        blur();
        angle+=0.01;
    }

    _AX=0x03;
    asm int 0x10;
}


地主 发表时间: 04-04-30 21:28

回复: ziaichen [ziaichen]   论坛用户   登录

我顶!

B1层 发表时间: 04-04-30 22:07

回复: xiaoshi [xiaoshi]   论坛用户   登录
好厉害
最好有点注解

B2层 发表时间: 04-04-30 22:38

回复: lida1818 [lida1818]   论坛用户   登录
不是我写的,是转的

B3层 发表时间: 04-04-30 23:28

回复: leonshoh [leonshoh]   论坛用户   登录
TC写的吧,跑在实模式下的:)

B4层 发表时间: 04-05-01 13:17

回复: sniper167 [sniper167]   论坛用户   登录
强人呀

B5层 发表时间: 04-05-01 17:51

回复: seny11 [seny11]   论坛用户   登录
看来数学还是有必要学好的~
可能这个在那些数学研究生和本科生来说不算什么~他也可用其他语言形成
可偶就不行

B6层 发表时间: 04-05-01 20:36

回复: tabris17 [tabris17]   论坛用户   登录
我就是数学系的本科生,都读了四年了,谁说是“不算什么”的


[此贴被 四不象(tabris17) 在 05月03日16时43分 编辑过]

B7层 发表时间: 04-05-03 16:43

回复: bluehacker [bluehacker]   论坛用户   登录
好让人羡慕啊,
我是学电子信息的,学的是C ,想编出一个好的程序一直是让我对计算机热忠的原因,想对其他的语言了解,不过自己没那么多时间,至今还没写几个象样的程序,加油啊!!

B8层 发表时间: 04-05-03 20:30

回复: sniper167 [sniper167]   论坛用户   登录
呵呵
楼上的也是学电子信息的呀

B9层 发表时间: 04-05-03 22:27

回复: lovejiang [lovejiang]   论坛用户   登录
我这里的怎么编译不出来呀


B10层 发表时间: 04-05-04 09:35

回复: lobam [xx_js]   论坛用户   登录
厉害

B11层 发表时间: 04-05-04 11:41

回复: swillow [swillow]   论坛用户   登录
不敢相信可以用c写出这么好的东西


B12层 发表时间: 04-05-04 21:39

回复: seny11 [seny11]   论坛用户   登录
四不象这么强啊~数学系的高材生。
你们数学不是有很多这种函数吗?
应该知道这种的构造方法的原理吧?
偶是看以前偶们学校的很多数学老师搞电脑图形的都很容易

B13层 发表时间: 04-05-05 09:50

回复: ABC [a2004]   论坛用户   登录
谁能教教我

B14层 发表时间: 04-05-05 20:36

回复: lwei889 [lwei889]   论坛用户   登录
好久没有回帖子拉,怎么也得顶一下

B15层 发表时间: 04-05-06 17:16

回复: fool [cike]   论坛用户   登录

可我看起来好费劲啊


B16层 发表时间: 04-05-07 15:39

回复: xiean [xiean]   论坛用户   登录
Genius,作者对直接写显存技术和对算法的应用让偶佩服

附编译好的执行文件(Borland C++ 3.1 编译),点 这里下载

建议用纯 MS-DOS 方式运行,因为在 2k/xp 的 cmd 状态下, 16 位程序运行环境是模拟的,所以在写屏上会变得很慢

B17层 发表时间: 04-05-07 16:20

回复: xiean [xiean]   论坛用户   登录
引用:

四不象这么强啊~数学系的高材生。
你们数学不是有很多这种函数吗?
应该知道这种的构造方法的原理吧?
偶是看以前偶们学校的很多数学老师搞电脑图形的都很容易



C for DOS 使用图形无非两种方式

1. 使用标准图形库
#include <graphics.h>
  这种方式所能达到的最大分辨率只有 640*480*16 或 320*200*256,用它达到图形应用的确相对简单,但是局限依然很多,特别是在一些图像渐变,分页等。

2. 使用 dos.h 利用 int 中断直接写屏
  这种方式就相对要专业得多,曾经很多游戏就用的直接写屏,这种方式需要自己开发一套接口,又或者说是直接在代码中写屏,这种方式能做到的效果就比直接用标准库要好得多,但是这需要开发者对显存,中断,显示页面等基层知识的深入了解。

所以,“搞电脑图形的都很容易”,但是,要搞好的电脑图形就很难很难

B18层 发表时间: 04-05-07 16:30

回复: bcliangzi [bcliangzi]   论坛用户   登录
晕!

B19层 发表时间: 04-05-07 16:33

回复: xiean [xiean]   论坛用户   登录
几个月来,难得在这儿见到如此好帖,我再顶

建议学 C,基础知识已学完的,深入理解源码中的算法

.........................8888..8888888
..................888888888888888888888888
...............8888:::8888888888888888888888888
.............8888::::::8888888888888888888888888888
............88::::::::888:::8888888888888888888888888
..........88888888::::8:::::::::::88888888888888888888
........888.8::888888::::::::::::::::::88888888888...888
...........88::::88888888::::m::::::::::88888888888....8
.........888888888888888888:M:::::::::::8888888888888
........88888888888888888888::::::::::::M88888888888888
........8888888888888888888888:::::::::M8888888888888888
.........8888888888888888888888:::::::M888888888888888888
........8888888888888888::88888::::::M88888888888888888888
......88888888888888888:::88888:::::M888888888888888...8888
.....88888888888888888:::88888::::M::;o*M*o;888888888....88
....88888888888888888:::8888:::::M:::::::::::88888888....8
...88888888888888888::::88::::::M:;:::::::::::888888888
..8888888888888888888:::8::::::M::aAa::::::::M8888888888.......8
..88...8888888888::88::::8::::M:::::::::::::888888888888888.8888
.88..88888888888:::8:::::::::M::::::::::;::88:88888888888888888
.8..8888888888888:::::::::::M::"@@@@@@@"::::8w8888888888888888
..88888888888:888::::::::::M:::::"@a@":::::M8i888888888888888
.8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888
8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888
888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888...88888888
888888.M:::::::::::::::M888888888:::::::MM88888888888888...8888888
8888...M::::::::::::::M88888888888::::::MM888888888888888....88888
.888...M:::::::::::::M8888888888888M:::::mM888888888888888....8888
..888..M::::::::::::M8888:888888888888::::m::Mm88888.888888...8888
...88..M::::::::::::8888:88888888888888888::::::Mm8...88888...888
...88..M::::::::::8888M::88888::888888888888:::::::Mm88888....88
...8...MM::::::::8888M:::8888:::::888888888888::::::::Mm8.....4
.......8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm....2
......88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M
.....8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M
....88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M
...88.888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:
...8.88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M
.....88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M
....888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M
....888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8
....88888..M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@
....8888...MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@
.....888....M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8
.....888....MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M
......88.....M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM
.......88....MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM
........88....MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM
.........88...8MM::::::::::::::::::::::::::::::::::MMMMMM
..........8...88MM::::::::::::::::::::::M:::M::::::::MM
..............888MM::::::::::::::::::MM::::::MM::::::MM
.............88888MM:::::::::::::::MMM:::::::mM:::::MM
.............888888MM:::::::::::::MMM:::::::::MMM:::M
............88888888MM:::::::::::MMM:::::::::::MM:::M
...........88.8888888M:::::::::MMM::::::::::::::M:::M
...........8..888888.M:::::::MM:::::::::::::::::M:::M:
..............888888.M::::::M:::::::::::::::::::M:::MM
.............888888..M:::::M::::::::::::::::::::::::M:M
.............888888..M:::::M:::::::::@::::::::::::::M::M
.............88888...M::::::::::::::@@:::::::::::::::M::M
............88888...M::::::::::::::@@@::::::::::::::::M::M
...........88888...M:::::::::::::::@@::::::::::::::::::M::M
..........88888...M:::::m::::::::::@::::::::::Mm:::::::M:::M
..........8888...M:::::M:::::::::::::::::::::::MM:::::::M:::M
.........8888...M:::::M:::::::::::::::::::::::MMM::::::::M:::M
........888....M:::::Mm::::::::::::::::::::::MMM:::::::::M::::M
......8888....MM::::Mm:::::::::::::::::::::MMMM:::::::::m::m:::M
.....888......M:::::M::::::::::::::::::::MMM::::::::::::M::mm:::M
..8888.......MM:::::::::::::::::::::::::MM:::::::::::::mM::MM:::M:
.............M:::::::::::::::::::::::::M:::::::::::::::mM::MM:::Mm
............MM::::::m:::::::::::::::::::::::::::::::::::M::MM:::MM
............M::::::::M:::::::::::::::::::::::::::::::::::M::M:::MM
...........MM:::::::::M:::::::::::::M:::::::::::::::::::::M:M:::MM
...........M:::::::::::M88:::::::::M:::::::::::::::::::::::MM::MMM
...........M::::::::::::8888888888M::::::::::::::::::::::::MM::MM
...........M:::::::::::::88888888M:::::::::::::::::::::::::M::MM
...........M::::::::::::::888888M:::::::::::::::::::::::::M::MM
...........M:::::::::::::::88888M:::::::::::::::::::::::::M:MM
...........M:::::::::::::::::88M::::::::::::::::::::::::::MMM
...........M:::::::::::::::::::M::::::::::::::::::::::::::MMM
...........MM:::::::::::::::::M::::::::::::::::::::::::::MMM
............M:::::::::::::::::M::::::::::::::::::::::::::MMM
............MM:::::::::::::::M::::::::::::::::::::::::::MMM
.............M:::::::::::::::M:::::::::::::::::::::::::MMM
.............MM:::::::::::::M:::::::::::::::::::::::::MMM
..............M:::::::::::::M::::::::::::::::::::::::MMM
..............MM:::::::::::M::::::::::::::::::::::::MMM
...............M:::::::::::M:::::::::::::::::::::::MMM
...............MM:::::::::M:::::::::::::::::::::::MMM
................M:::::::::M::::::::::::::::::::::MMM
................MM:::::::M::::::::::::::::::::::MMM
.................MM::::::M:::::::::::::::::::::MMM
.................MM:::::M:::::::::::::::::::::MMM
..................MM::::M::::::::::::::::::::MMM
..................MM:::M::::::::::::::::::::MMM
...................MM::M:::::::::::::::::::MMM
...................MM:M:::::::::::::::::::MMM
....................MMM::::::::::::::::::MMM
....................MM::::::::::::::::::MMM
.....................M:::::::::::::::::MMM
....................MM::::::::::::::::MMM
....................MM:::::::::::::::MMM
....................MM::::M:::::::::MMM:
....................mMM::::MM:::::::MMMM
.....................MMM:::::::::::MMM:M
.....................mMM:::M:::::::M:M:M
......................MM::MMMM:::::::M:M
......................MM::MMM::::::::M:M
......................mMM::MM::::::::M:M
.......................MM::MM:::::::::M:M
.......................MM::MM::::::::::M:m
.......................MM:::M:::::::::::MM
.......................MMM:::::::::::::::M:
.......................MMM:::::::::::::::M:
.......................MMM::::::::::::::::M
.......................MMM::::::::::::::::M
.......................MMM::::::::::::::::Mm
........................MM::::::::::::::::MM
........................MMM:::::::::::::::MM
........................MMM:::::::::::::::MM
........................MMM:::::::::::::::MM
........................MMM:::::::::::::::MM
.........................MM::::::::::::::MMM
.........................MMM:::::::::::::MM
.........................MMM:::::::::::::MM
.........................MMM::::::::::::MM
..........................MM::::::::::::MM
..........................MM::::::::::::MM
..........................MM:::::::::::MM
..........................MMM::::::::::MM
..........................MMM::::::::::MM
...........................MM:::::::::MM
...........................MMM::::::::MM
...........................MMM::::::::MM
............................MM::::::::MM
............................MMM::::::MM
............................MMM::::::MM
.............................MM::::::MM
.............................MM::::::MM
..............................MM:::::MM
..............................MM:::::MM:
..............................MM:::::M:M
..............................MM:::::M:M
..............................:M::::::M:
.............................M:M:::::::M
............................M:::M::::::M
...........................M::::M::::::M
..........................M:::::M:::::::M
.........................M::::::MM:::::::M
.........................M:::::::M::::::::M
.........................M;:;::::M:::::::::M
.........................M:m:;:::M::::::::::M
.........................MM:m:m::M::::::::;:M
..........................MM:m::MM:::::::;:;M
...........................MM::MMM::::::;:m:M
............................MMMM.MM::::m:m:MM
..................................MM::::m:MM
...................................MM::::MM
....................................MM::MM


B20层 发表时间: 04-05-07 16:38

回复: wuxiu [wuxiu]   论坛用户   登录
我靠,太强了,超级牛B,如果能有这个程序功底,可以写游戏了!!

B21层 发表时间: 04-05-07 17:26

回复: lida1818 [lida1818]   论坛用户   登录
悟休真是一针见血道出真谛!此程序的作者虽然现在没有实现他写游戏的宿愿,但是他学编程的最初目的就是写游戏。

B22层 发表时间: 04-05-07 19:19

回复: TomyChen [quest]   版主   登录
好帖,就是要顶!!!

悄悄告诉你,别跟悟休谈游戏。。。他可以跟你扯上三个世纪,而不会觉得累

B23层 发表时间: 04-05-07 21:06

回复: snntss [snntss]   论坛用户   登录
引:
------------------------------------------------------------------
悟休真是一针见血道出真谛!此程序的作者虽然现在没有实现他写游戏的宿愿,但是他学编程的最初目的就是写游戏。
---------------------------------------------------------
这么强的人!

他没有实现写游戏的夙愿,那他现在在做什么?

有关于他的介绍吗?



B24层 发表时间: 04-05-08 02:23

回复: haoweir [haoweir]   论坛用户   登录
不错,我上次看到有人可以用汇编把这种编出来

B25层 发表时间: 04-05-09 09:37

回复: eidson [hackerwang]   论坛用户   登录
    好厉害啊!!!tc可以这样吗?


B26层 发表时间: 04-05-09 11:18

回复: yjinlong [yjinlong]   论坛用户   登录
怎么这么棒呀,我现在在相信C真的可以万能呀!
有没有源代码呀,大哥?

B27层 发表时间: 04-05-10 15:19

回复: xj1985xj [xj1985xj]   论坛用户   登录
是个人才.俺学了半年C语言拉.连个什么都编不出来.
郁闷啊.今日见此大哥的作品.真是仿佛看到了一点点的阳光

B28层 发表时间: 04-05-12 07:25

回复: jake007 [jake007]   论坛用户   登录
四个字

绝对要顶

B29层 发表时间: 04-05-12 19:40

回复: tiezhong [tiezhong]   论坛用户   登录
看了 这个程序使我增加了信心,C确实是最NB的语言,我一定要学好!

B30层 发表时间: 04-05-14 15:28

回复: peter [peter]   论坛用户   登录
帮忙顶下


B31层 发表时间: 04-05-29 19:10

回复: qqh818 [qqh818]   论坛用户   登录
  我好羡慕呀,      谁能教教我,我也想学呀!

B32层 发表时间: 04-05-29 19:15

回复: yangtaoabc [yangtaoabc]   论坛用户   登录
c有编辑颜色的能力吗?  用什么工具调试啊 ?

B33层 发表时间: 04-05-30 18:23

回复: apollomz [apollomz]   论坛用户   登录
怎么回事,在我这有错误,不是真的吧,怎么办

B34层 发表时间: 04-05-31 12:01

回复: Anubis [shajia2646]   论坛用户   登录


B35层 发表时间: 04-05-31 17:44

回复: ricol [ricolwang]   论坛用户   登录
建议:
小哥最好把这个程序改一点地方:用int86(int,union REGS *,union REGS *)取代asm int ...
这样在tc下都可以编译出来了。


B36层 发表时间: 04-07-19 15:35

回复: qiezic [qiezic]      登录
goog!

B37层 发表时间: 04-07-19 17:09

回复: lgywan [lgywan]   论坛用户   登录
为什么我在TC2.0里不能看呢,TC2.0说错误: (flaowe是我给它取的文件名)
    Error e:\tc\tc\flaowe.c 1:Unable to open include file 'math.h'
        Error e:\tc\tc\flaowe.c 2:Unable to open include file 'mem.h'
        Error e:\tc\tc\flaowe.c 3:Unable to open include file 'dos.h'
        Error e:\tc\tc\flaowe.c 4:Unable to open include file 'stdlib.h'
        Error e:\tc\tc\flaowe.c 56: IN-line assembly ont allowed in function main
        Error e:\tc\tc\flaowe.c 81: IN-line assembly ont allowed in function main
       
为什么会这样呀???!!!

B38层 发表时间: 04-07-19 17:30

回复: fenghuang2 [fenghuang2]   论坛用户   登录
太厉害了,c语言真的写出这种程序!

B39层 发表时间: 04-07-20 10:48

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号