写给csdn网站得人的,请看一下

dashan35 2002-03-09 02:12:11
我是一个师范院校的学生,正在自学编程,工具用的是C VB,但由于学校十分偏僻,信息量小,书店里又没有。无法得到所需的计算机知识。我每次进来都想找一下编程序的代码,例如俄罗斯方块等小的或中型的软件,看他们是如何编写的,自己好学着编一下。但每次都失望而归。
csdn 能不能在网站内开设一个区域,里面放一些编写好的中小软件的代码,再在旁边写上注释,好让我们这些菜鸟能学一下 。(因为我看到:如果有人发送软件代码的帖子变会有许多人要,我相信象我这样的人有很多)把这个网站办多一个功能:初学计算机爱好者的乐园不是也很好么!
另外谁能告之我想要得那些软件的代码的网址,高分送之。谢谢!
...全文
42 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dashan35 2002-03-09
  • 打赏
  • 举报
回复
谢谢
welon 2002-03-09
  • 打赏
  • 举报
回复
实际上那段代码不用注释,各项功能都很清楚,只要在自己代码中调用就行
dashan35 2002-03-09
  • 打赏
  • 举报
回复
#define sgn(x) ((x<0)?-1:((x>0)?1:0)) 中((x<0)?-1:((x>0)?1:0)) 是何用处
dashan35 2002-03-09
  • 打赏
  • 举报
回复
谢谢,但有注释更好了,我能知道为什么这样写
dashan35 2002-03-09
  • 打赏
  • 举报
回复
我们这儿很闭塞,我也从没写过 ,不知道如何去写呀
welon 2002-03-09
  • 打赏
  • 举报
回复
/*兄弟,这段代码好不?*/
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <alloc.h>
#include <limits.h>
#define sgn(x) ((x<0)?-1:((x>0)?1:0))
#define HRES 800.0
#define VRES 600
float offset;
unsigned char far *svga=(unsigned char far*)0xA0000000;
union REGS regs;
struct SREGS sregs;

setmode(unsigned int m)
{
regs.x.ax=0x4f02;
regs.x.bx=m; // mode of SVGA
int86(0x10,®s,®s);

}
void stdtextmode(void)
{
regs.h.ah=0x00;
regs.h.al=0x03;
int86(0x10,®s,®s);
}
void writedot(unsigned int x,unsigned int y,int color)
{
regs.h.ah=0x0c;
regs.h.al=color;
regs.x.dx=x; //row
regs.x.cx=y; //col
int86(0x10,®s,®s);
}


void printtextxy(char *txtstr,int x ,int y)
{
regs.h.ah=0x02;
regs.h.dh=y;
regs.h.dl=x;
regs.h.bh=0x00;
int86(0x10,®s,®s);
printf("%s",txtstr);
}

void line(int x1, int y1, int x2, int y2, unsigned int color)
{
int dx,dy,sdx,sdy,px,py,dxabs,dyabs,i;
float slope;
dx=x2-x1; /* the horizontal distance of the line */
dy=y2-y1; /* the vertical distance of the line */
dxabs=abs(dx);
dyabs=abs(dy);
sdx=sgn(dx);
sdy=sgn(dy);
if (dxabs>=dyabs) /* the line is more horizontal than vertical */
{
slope=(float)dy / (float)dx;
for(i=0;i!=dx;i+=sdx)
{
px=i+x1;
py=slope*i+y1;
offset=HRES*px+py;
checkbank();
svga[offset]=color;
}
}
else /* the line is more vertical than horizontal */
{
slope=(float)dx / (float)dy;
for(i=0;i!=dy;i+=sdy)
{
px=slope*i+x1;
py=i+y1;
offset=HRES*px+py;
checkbank();
svga[offset]=color;
}
}
}

copyarea(int srow,int scol,int erow, int ecol,char *add)
{
int i,j;
for(i=0;i<=erow-srow;i++)
{
for(j=0;j<=ecol-scol;j++)
{
offset=HRES*(srow+i)+(scol+j);
checkbank();
*add = svga[offset];
add++;
}
}
}

putarea(int srow,int scol,int erow, int ecol,char *add)
{
int i,j;
for(i=0;i<=erow-srow;i++)
{
for(j=0;j<=ecol-scol;j++)
{
offset=HRES*(srow+i)+(scol+j);
checkbank();
svga[offset]=*add;
add++;
}
}
}

checkbank()
{
int num;
static int currentnum=0;
num=offset/65536;
if (currentnum!=num)
{
regs.x.ax=0x4f05;
regs.x.bx=0x0000;
regs.x.dx=16*num;
int86(0x10,®s,®s);
currentnum=num;
}
offset=offset-(num * 65536);
return(offset);
}

void writechar(int *fnt)
{
unsigned int i,row,col,tmp,j;
row=0;
col=0;
for(i=0;i<16;i++)
{
tmp=0x8000;
col=0;
if ( (*(fnt+i) & tmp) != 0)
writedot(row,col,2);
else
writedot(row,col,0);
col++;
for(j=0;j<15;j++)
{
tmp=tmp>>1;
if ( (*(fnt+i) & tmp) != 0)
writedot(row,col+j,2);
else
writedot(row,col+j,0);
}
row++;

}
}
// Mouse Functions
void initmouse()
{
regs.x.ax=0x0000;
int86(0x33,®s,®s);
if(regs.x.ax==0x0000)
{
printf("mouse not present\n");
exit(1);
}
}

void showmouseptr()
{
regs.x.ax=0x0001;
int86(0x33,®s,®s);
}

void getmousepos()
{
regs.x.ax=0x0003;
int86(0x33,®s,®s);
}
void draw_window()
{
int i;

line(0,0,100,0,14);
line(0,0,0,100,14);
line(100,0,100,100,14);
line(0,100,100,100,14);
line(10,0,10,100,14);
for(i=0;i<9;i++)
{
line(1+i,1,1+i,100,13);
}

}
void drawback(int col)
{
int i,j;
for(i=0;i<VRES;i++)
{
for(j=0;j<HRES;j++)
{
offset=HRES*i+j;
checkbank();
svga[offset]=col;
}
}
}
void draw_area(int x1,int y1,int x2,int y2,int col)
{
int i,j;
for(i=x1;i<=x2;i++)
{
for(j=y1;j<=y2;j++)
{
offset=HRES*i+j;
checkbank();
svga[offset]=col;
}
}
}



void main()
{
unsigned int mode;
float arearqd;
int col=2,chk=0;
int i,j,flag;
char *p;
int fnt[] = {
0xffff,0xffff,0x0180,0x0180,
0x0180,0x0180,0x0180,0x0180,
0x0180,0x0180,0x0180,0x0180,
0x0180,0x0180,0x03c0,0x07e0
};


printf("\n\nEnter the hex value of mode: ");
scanf("%x",&mode);
clrscr();
getch();
setmode(mode);
arearqd=(200-0+1)*(200-0+1);
p=(char *)malloc(arearqd);
if (p==NULL)
{
printf("Memory Allocation error");
exit(0);
}
col=1;
drawback(col);
draw_window();
copyarea(0,0,200,200,p);
getch();
draw_area(0,0,100,100,col);
putarea(100,100,300,300,p);
getch();
stdtextmode();
printf("We are back.. Press any key to exit");
free(p);
getch();
}

蚂蚁 2002-03-09
  • 打赏
  • 举报
回复
就我个人的感受而言,你最好是自己先写个俄罗斯方块什么的,然后再看看别人的思路,直接拿着别人的代码看帮助并不大

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧