您的位置:

c语言的变色龙小程序,变色龙编程

本文目录一览:

变色龙引导怎么用?

Chameleon Install(变色龙引导)是一个启动引导程序,Chameleon Install(变色龙引导)组合了多种引导程序为一身体,可引导多系统,它基于boot123。

变色龙引导[Chameleon Install 2.2 svn 2246 for Windows][变色龙安装程序] 更新日志:

1.更新所有安装包的语言、菜单、日志

2.更新Nvidia和ATI显卡的列表

3.添加nvda_drv=1 内核启动到安装列表

4.修复ATI显卡问题

5.加入Linux的GPT分区卷标的支持

6.添加对于10.9的引导支持

7.题名新默认主题的图标集

MAC变色龙的安装与引导(详细)

此法基于变色龙引导,如果你打算用Boothink,请绕道而行。2011年,让我们彻底扔掉Boothink这个过时的引导工具,进入变色龙新纪元。另外此教程基于intel平台,amd平台的可以参考,但需要自己手动替换内核。写此文的目的为了对早期一些雪豹安装教程存在的不合理地方进行一下拨乱反正,使其更适合新手操作,对高手们无意冒犯。此法的优点在于没有改变硬盘原有的MBR内容,也就是说还是用原来win7的MBR,所有mac启动只是挂在win7启动菜单下,这样对于mac和win7来说都是相对独立的,如果win7重装后,只需按上述步骤把mac的启动项重新添加进去win7启动菜单,即可恢复原来的mac引导。同样,mac需要重装的话,直接从hjmac引导进去即可,互不干扰。

以下操作必须基于win7环境下,32/64都可以,而且是已经打开ACHI模式前提下安装好的Win7系统。

一、分区

分区前提醒各位做好数据备份,因为万一出现问题,数据有可能毁于一旦。如果你的硬盘里存在品牌机厂商预置的隐藏系统恢复分区,建议你全部分区干掉后再对硬盘重新分区,因为那样的分区表通常是乱七八糟的,这种情况下很难正常安装MAC。

以下采用常用的MBR分区格式, 在现有硬盘不破坏原有数据的前提下腾出空间来安装MAC:

首先用Paragon Partition Manager对硬盘最后一个扩展分区做调整(也可以用win7自带的压缩卷功能),腾出30G空间来(30G是最起码的,自己决定)。如下图,原来的最后一个扩展分区47G,腾出约30G空间。

然后关闭Paragon Partition Manager,打开DiskGenius,右击硬盘最后的30G空间,选择建立新分区,大家可以见到只能建立逻辑分区,按下图选择后建立一个20G分区做MAC的系统盘(大小可以自定,但不要低于20G),文件系统类型选择‘其他’,标识为AF。然后右击新建的20G逻辑分区,选择‘转换为主分区’,完成后,继续右击剩下的10G空间建立新分区,作为安装文件分区,此时已经可以建立主分区,文件系统类型还是选择‘其他’,标识为AF,以上步骤完成后点保存更改。

(这里的分区方法显得有点罗嗦,说明一下原因,由于这30G空间是从扩展分区腾出来的,直接利用Paragon Partition Manager只能分成逻辑分区,这样的情况下安装mac后,会自动变成活动的主分区,原来的win7主分区就会失去活动属性,导致无法启动,需要用win pe来重设win7主分区为活动分区。为了避免这种情况出现,我们才利用DiskGenius来帮忙)

完成后,退出DiskGenius,再打开Paragon Partition Manager,分别把两个新建的主分区格式化为MAC专用的格式HFS,分别添加卷标为MAC和MAC install,并把最后一个10G的安装文件分区添加一个盘符,因为接下来的硬盘安装助手需要盘符才能识别目标分区。(卷标是为了识别分区,免得选择错误,格式化为MAC专用HFS格式的目的是为了避免出现硬盘安装助手提示非HFS格式而无法写入)

完成后,在win7磁盘管理下的分区图:

二、写入Mac OS X 10.6.3 原版安装文件

打开MAC 硬盘安装助手,选择下载解压好的Mac OS X 10.6.3 Retail DVD___原版精简版ISO,如下图,3个选项都去掉,目标分区选择刚才分好的10G安装文件区,写入过程中有可能出现程序无响应的情况,不用管它,只要硬盘在读写就没有问题。几分钟完成后,如果提示Change partition type to AF:Failed也没有关系,因为我们在分区的时候已经把ID设为了AF。

(备注:如果选用东皇iAntares OSx86 10.6.5 v3.2, 须注意的是MAC 硬盘安装助手无法直接支持此ISO,必须先用hfsexplorer把ISO转换为DMG格式后再写入。)

三、EasyBCD添加HJMAC.iso的启动项到win7启动菜单

HJMAC.iso位于HJMac_Tools_CD.iso内,50多M,把这个iso复制到C盘下,可以自建一个HJMAC文件夹,然后按下图添加一个HJMAC.iso的启动项到win7启动菜单。添加这个启动项的目的是用来安装MAC。

完成后即可重启系统。

四、安装Mac OS X 10.6.3

重启后在win7启动菜单中选择HJMac,即可见到一个变色龙引导界面,选择10G的分区(可以见到mac os x install dvd的字样),确定后即可进入安装,到了选择安装分区的界面,在菜单中用磁盘工具把20G MAC分区抹掉为mac日志式,然后退出磁盘工具,选择这个区为安装目标分区,自定义全选,继续,预计15分钟即可完成安装,系统会自动重启。再次提醒一下,最新版的变色龙可以支持intel i系列cpu,无需再更换内核。

(备注:如果采用的是东皇iAntares OSx86 10.6.5 v3.2,在自定义里面只选择主系统程式,其他选项都不要选)

五、进入MAC桌面并安装MAC变色龙

安装完成后第一次重启,还是选择HJMac启动项,在变色龙里面选择MAC系统分区,即可启动首次进入mac,设置完毕,进入mac桌面后,双击安装mac版变色龙,文件位于HJMac_Tools_CD.iso内,以下路径:

HJMac_Tools_CD.iso\系统引导\①、变色龙(推荐)\请根据硬件、配置选择安装\通用 变色龙引导.dmg

六、EasyBCD添加MAC变色龙引导到win7启动菜单

重启后进入win7,按下图添加MBR引导的MAC启动项,并用附件替换掉C:\NST文件夹下的nst_mac.mbr即可。有网友问为什么要添加mac版变色龙的引导项,很简单,HJMAC.iso的参数设计非常保守,适合用来安装MAC,而mac版变色龙才是真正能发挥MAC各项性能的神器,而且便于修改各项参数。重启后选择这个‘NST MAC OS X’启动项,即可进入mac变色龙引导界面,选择雪豹的系统所在MAC分区即可引导进去MAC.至此,mac安装即告完成,win7启动菜单中就有了两个变色龙启动项,建议都保留着,平时用MAC变色龙引导,万一MAC变色龙引导出现问题,就使用HJMAC.iso进行引导。

附件:

1. MAC 硬盘安装助手0.3

2. 分区工具Paragon Partition Manager 10.0 Server 中文绿色版(通用于Win7 32/64),

3. 分区工具DiskGenius (分32和64位两个版本,要根据Win7 32/64下载相应的)

4. win7启动菜单修改工具EasyBCD

5. Chameleon HJMac Boot CD【变色龙 Intel、AMD 一体引导光盘】ISO

6. Mac OS X 10.6.3 Retail DVD___原版精简版ISO 4.37G (直接支持MBR分区安装,无需替换文件)

安装变色龙脚本显示没有找到兼容的应用程序

对windows进行设置。

首先我们对windows设置下,因为这些文件都是隐藏文件,我们打开隐藏文件设置。把隐藏受保护的系统系统文件的钩去掉,并把不显示隐藏文件改为显示所有文件。

然后打开并解压变色龙修正分区错误的补丁,把avlgo.sys复制到C盘并替换掉原来的文件。

求C语言小程序源代码,300行左右

黑白棋游戏

#include "graphics.h" /*图形系统头文件*/

#define LEFT 0x4b00 /*光标左键值*/

#define RIGHT 0x4d00 /*光标右键值*/

#define DOWN 0x5000 /*光标下键值*/

#define UP 0x4800 /*光标上键值*/

#define ESC 0x011b /* ESC键值*/

#define ENTER 0x1c0d /* 回车键值*/

int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/

char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/

void playtoplay(void);/*人人对战函数*/

void DrawQp(void);/*画棋盘函数*/

void SetPlayColor(int x);/*设置棋子第一次的颜色*/

void MoveColor(int x,int y);/*恢复原来棋盘状态*/

int QpChange(int x,int y,int z);/*判断棋盘的变化*/

void DoScore(void);/*处理分数*/

void PrintScore(int n);/*输出成绩*/

void playWin(void);/*输出胜利者信息*/

/******主函数*********/

void main(void)

{

int gd=DETECT,gr;

initgraph(gd,gr,"c:\\tc"); /*初始化图形系统*/

DrawQp();/*画棋盘*/

playtoplay();/*人人对战*/

getch();

closegraph();/*关闭图形系统*/

}

void DrawQp()/*画棋盘*/

{

int i,j;

score1=score2=0;/*棋手一开始得分都为0*/

setbkcolor(BLUE);

for(i=100;i=420;i+=40)

{

line(100,i,420,i);/*画水平线*/

line(i,100,i,420); /*画垂直线*/

}

setcolor(0);/*取消圆周围的一圈东西*/

setfillstyle(SOLID_FILL,15);/*白色实体填充模式*/

fillellipse(500,200,15,15); /*在显示得分的位置画棋*/

setfillstyle(SOLID_FILL,8); /*黑色实体填充模式*/

fillellipse(500,300,15,15);

a[3][3]=a[4][4]=1;/*初始两个黑棋*/

a[3][4]=a[4][3]=2;/*初始两个白棋*/

setfillstyle(SOLID_FILL,WHITE);

fillellipse(120+3*40,120+3*40,15,15);

fillellipse(120+4*40,120+4*40,15,15);

setfillstyle(SOLID_FILL,8);

fillellipse(120+3*40,120+4*40,15,15);

fillellipse(120+4*40,120+3*40,15,15);

score1=score2=2; /*有棋后改变分数*/

DoScore();/*输出开始分数*/

}

void playtoplay()/*人人对战*/

{

int x,y,t=1,i,j,cc=0;

while(1)/*换棋手走棋*/

{

x=120,y=80;/*每次棋子一开始出来的坐标,x为行坐标,y为列坐标*/

while(1) /*具体一个棋手走棋的过程*/

{

PrintScore(1);/*输出棋手1的成绩*/

PrintScore(2);/*输出棋手2的成绩*/

SetPlayColor(t);/*t变量是用来判断棋手所执棋子的颜色*/

fillellipse(x,y,15,15);

key=bioskey(0);/*接收按键*/

if(key==ESC)/*跳出游戏*/

break;

else

if(key==ENTER)/*如果按键确定就可以跳出循环*/

{

if(y!=80a[(x-120)/40][(y-120)/40]!=1

a[(x-120)/40][(y-120)/40]!=2)/*如果落子位置没有棋子*/

{

if(t%2==1)/*如果是棋手1移动*/

a[(x-120)/40][(y-120)/40]=1;

else/*否则棋手2移动*/

a[(x-120)/40][(y-120)/40]=2;

if(!QpChange(x,y,t))/*落子后判断棋盘的变化*/

{

a[(x-120)/40][(y-120)/40]=0;/*恢复空格状态*/

cc++;/*开始统计尝试次数*/

if(cc=64-score1-score2) /*如果尝试超过空格数则停步*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

break;

}

else

continue;/*如果按键无效*/

}

DoScore();/*分数的改变*/

break;/*棋盘变化了,则轮对方走棋*/

}

else/*已经有棋子就继续按键*/

continue;

}

else /*四个方向按键的判断*/

if(key==LEFTx120)/*左方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x-=40;

fillellipse(x,y,15,15);

}

else

if(key==RIGHTx400y80)/*右方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x+=40;

fillellipse(x,y,15,15);

}

else

if(key==UPy120)/*上方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y-=40;

fillellipse(x,y,15,15);

}

else

if(key==DOWNy400)/*下方向键*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y+=40;

fillellipse(x,y,15,15);

}

}

if(key==ESC)/*结束游戏*/

break;

if((score1+score2)==64||score1==0||score2==0)/*格子已经占满或一方棋子为0判断胜负*/

{

playWin();/*输出最后结果*/

break;

}

t=t%2+1; /*一方走后,改变棋子颜色即轮对方走*/

cc=0; /*计数值恢复为0*/

} /*endwhile*/

}

void SetPlayColor(int t)/*设置棋子颜色*/

{

if(t%2==1)

setfillstyle(SOLID_FILL,15);/*白色*/

else

setfillstyle(SOLID_FILL,8);/*灰色*/

}

void MoveColor(int x,int y)/*走了一步后恢复原来格子的状态*/

{

if(y100)/*如果是从起点出发就恢复蓝色*/

setfillstyle(SOLID_FILL,BLUE);

else/*其他情况如果是1就恢复白色棋子,2恢复黑色棋子,或恢复蓝色棋盘*/

switch(a[(x-120)/40][(y-120)/40])

{

case 1:

setfillstyle(SOLID_FILL,15);break; /*白色*/

case 2:

setfillstyle(SOLID_FILL,8);break; /*黑色*/

default:

setfillstyle(SOLID_FILL,BLUE); /*蓝色*/

}

}

int QpChange(int x,int y,int t)/*判断棋盘的变化*/

{

int i,j,k,kk,ii,jj,yes;

yes=0;

i=(x-120)/40; /*计算数组元素的行下标*/

j=(y-120)/40; /*计算数组元素的列下标*/

SetPlayColor(t);/*设置棋子变化的颜色*/

/*开始往8个方向判断变化*/

if(j6)/*往右边*/

{

for(k=j+1;k8;k++)

if(a[i][k]==a[i][j]||a[i][k]==0)/*遇到自己的棋子或空格结束*/

break;

if(a[i][k]!=0k8)

{

for(kk=j+1;kkkk8;kk++)/*判断右边*/

{

a[i][kk]=a[i][j]; /*改变棋子颜色*/

fillellipse(120+i*40,120+kk*40,15,15);

}

if(kk!=j+1) /*条件成立则有棋子改变过颜色*/

yes=1;

}

}

if(j1)/*判断左边*/

{

for(k=j-1;k=0;k--)

if(a[i][k]==a[i][j]||!a[i][k])

break;

if(a[i][k]!=0k=0)

{

for(kk=j-1;kkkk=0;kk--)

{

a[i][kk]=a[i][j];

fillellipse(120+i*40,120+kk*40,15,15);

}

if(kk!=j-1)

yes=1;

}

}

if(i6)/*判断下边*/

{

for(k=i+1;k8;k++)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0k8)

{

for(kk=i+1;kkkk8;kk++)

{

a[kk][j]=a[i][j];

fillellipse(120+kk*40,120+j*40,15,15);

}

if(kk!=i+1)

yes=1;

}

}

if(i1)/*判断上边*/

{

for(k=i-1;k=0;k--)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0k=0)

{

for(kk=i-1;kkkk=0;kk--)

{

a[kk][j]=a[i][j];

fillellipse(120+kk*40,120+j*40,15,15);

}

if(kk!=i-1)

yes=1;

}

}

if(i1j6)/*右上*/

{

for(k=i-1,kk=j+1;k=0kk8;k--,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]k=0kk8)

{

for(ii=i-1,jj=j+1;iikk=0;ii--,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i6j1)/*左下*/

{

for(k=i+1,kk=j-1;k8kk=0;k++,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0k8kk=0)

{

for(ii=i+1,jj=j-1;iikk8;ii++,jj--)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

if(i1j1)/*左上*/

{

for(k=i-1,kk=j-1;k=0kk=0;k--,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0k=0kk=0)

{

for(ii=i-1,jj=j-1;iikk=0;ii--,jj--)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i6j6)/* 右下*/

{

for(k=i+1,kk=j+1;kk8kk8;k++,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0kk8k8)

{

for(ii=i+1,jj=j+1;iikk8;ii++,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii*40,120+jj*40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

return yes;/*返回是否改变过棋子颜色的标记*/

}

void DoScore()/*处理分数*/

{

int i,j;

score1=score2=0;/*重新开始计分数*/

for(i=0;i8;i++)

for(j=0;j8;j++)

if(a[i][j]==1)/*分别统计两个人的分数*/

score1++;

else

if(a[i][j]==2)

score2++;

}

void PrintScore(int playnum)/*输出成绩*/

{

if(playnum==1)/*清除以前的成绩*/

{

setfillstyle(SOLID_FILL,BLUE);

bar(550,100,640,400);

}

setcolor(RED);

settextstyle(0,0,4);/*设置文本输出样式*/

if(playnum==1)/*判断输出哪个棋手的分,在不同的位置输出*/

{

sprintf(playone,"%d",score1);

outtextxy(550,200,playone);

}

else

{

sprintf(playtwo,"%d",score2);

outtextxy(550,300,playtwo);

}

setcolor(0);

}

void playWin()/*输出最后的胜利者结果*/

{

settextstyle(0,0,4);

setcolor(12);

if(score2score1)/*开始判断最后的结果*/

outtextxy(100,50,"black win!");

else

if(score2score1)

outtextxy(100,50,"white win!");

else

outtextxy(60,50,"you all win!");

}

五子棋游戏

/*五子棋*/

#includestdio.h

#includestdlib.h

#includegraphics.h

#includebios.h

#includeconio.h

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

#define SPACE 0x3920

#define BILI 20

#define JZ 4

#define JS 3

#define N 19

int box[N][N];

int step_x,step_y ;

int key ;

int flag=1 ;

void draw_box();

void draw_cicle(int x,int y,int color);

void change();

void judgewho(int x,int y);

void judgekey();

int judgeresult(int x,int y);

void attentoin();

void attention()

{

char ch ;

window(1,1,80,25);

textbackground(LIGHTBLUE);

textcolor(YELLOW);

clrscr();

gotoxy(15,2);

printf("游戏操作规则:");

gotoxy(15,4);

printf("Play Rules:");

gotoxy(15,6);

printf("1、按左右上下方向键移动棋子");

gotoxy(15,8);

printf("1. Press Left,Right,Up,Down Key to move Piece");

gotoxy(15,10);

printf("2、按空格确定落棋子");

gotoxy(15,12);

printf("2. Press Space to place the Piece");

gotoxy(15,14);

printf("3、禁止在棋盘外按空格");

gotoxy(15,16);

printf("3. DO NOT press Space outside of the chessboard");

gotoxy(15,18);

printf("你是否接受上述的游戏规则(Y/N)");

gotoxy(15,20);

printf("Do you accept the above Playing Rules? [Y/N]:");

while(1)

{

gotoxy(60,20);

ch=getche();

if(ch=='Y'||ch=='y')

break ;

else if(ch=='N'||ch=='n')

{

window(1,1,80,25);

textbackground(BLACK);

textcolor(LIGHTGRAY);

clrscr();

exit(0);

}

gotoxy(51,12);

printf(" ");

}

}

void draw_box()

{

int x1,x2,y1,y2 ;

setbkcolor(LIGHTBLUE);

setcolor(YELLOW);

gotoxy(7,2);

printf("Left, Right, Up, Down KEY to move, Space to put, ESC-quit.");

for(x1=1,y1=1,y2=18;x1=18;x1++)

line((x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI);

for(x1=1,y1=1,x2=18;y1=18;y1++)

line((x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI);

for(x1=1;x1=18;x1++)

for(y1=1;y1=18;y1++)

box[x1][y1]=0 ;

}

void draw_circle(int x,int y,int color)

{

setcolor(color);

setlinestyle(SOLID_LINE,0,1);

x=(x+JZ)*BILI ;

y=(y+JS)*BILI ;

circle(x,y,8);

}

void judgekey()

{

int i ;

int j ;

switch(key)

{

case LEFT :

if(step_x-10)

break ;

else

{

for(i=step_x-1,j=step_y;i=1;i--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(i1)break ;

step_x=i ;

judgewho(step_x,step_y);

break ;

}

case RIGHT :

if(step_x+118)

break ;

else

{

for(i=step_x+1,j=step_y;i=18;i++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(i18)break ;

step_x=i ;

judgewho(step_x,step_y);

break ;

}

case DOWN :

if((step_y+1)18)

break ;

else

{

for(i=step_x,j=step_y+1;j=18;j++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(j18)break ;

step_y=j ;

judgewho(step_x,step_y);

break ;

}

case UP :

if((step_y-1)0)

break ;

else

{

for(i=step_x,j=step_y-1;j=1;j--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(j1)break ;

step_y=j ;

judgewho(step_x,step_y);

break ;

}

case ESC :

break ;

case SPACE :

if(step_x=1step_x=18step_y=1step_y=18)

{

if(box[step_x][step_y]==0)

{

box[step_x][step_y]=flag ;

if(judgeresult(step_x,step_y)==1)

{

sound(1000);

delay(1000);

nosound();

gotoxy(30,4);

if(flag==1)

{

setbkcolor(BLUE);

cleardevice();

setviewport(100,100,540,380,1);

/*定义一个图形窗口*/

setfillstyle(1,2);

/*绿色以实填充*/

setcolor(YELLOW);

rectangle(0,0,439,279);

floodfill(50,50,14);

setcolor(12);

settextstyle(1,0,5);

/*三重笔划字体, 水平放?5倍*/

outtextxy(20,20,"The White Win !");

setcolor(15);

settextstyle(3,0,5);

/*无衬笔划字体, 水平放大5倍*/

outtextxy(120,120,"The White Win !");

setcolor(14);

settextstyle(2,0,8);

getch();

closegraph();

exit(0);

}

if(flag==2)

{

setbkcolor(BLUE);

cleardevice();

setviewport(100,100,540,380,1);

/*定义一个图形窗口*/

setfillstyle(1,2);

/*绿色以实填充*/

setcolor(YELLOW);

rectangle(0,0,439,279);

floodfill(50,50,14);

setcolor(12);

settextstyle(1,0,8);

/*三重笔划字体, 水平放大8倍*/

outtextxy(20,20,"The Red Win !");

setcolor(15);

settextstyle(3,0,5);

/*无衬笔划字体, 水平放大5倍*/

outtextxy(120,120,"The Red Win !");

setcolor(14);

settextstyle(2,0,8);

getch();

closegraph();

exit(0);

}

}

change();

break ;

}

}

else

break ;

}

}

void change()

{

if(flag==1)

flag=2 ;

else

flag=1 ;

}

void judgewho(int x,int y)

{

if(flag==1)

draw_circle(x,y,15);

if(flag==2)

draw_circle(x,y,4);

}

int judgeresult(int x,int y)

{

int j,k,n1,n2 ;

while(1)

{

n1=0 ;

n2=0 ;

/*水平向左数*/

for(j=x,k=y;j=1;j--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/*水平向右数*/

for(j=x,k=y;j=18;j++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1=5)

{

return(1);

break ;

}

/*垂直向上数*/

n1=0 ;

n2=0 ;

for(j=x,k=y;k=1;k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/*垂直向下数*/

for(j=x,k=y;k=18;k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1=5)

{

return(1);

break ;

}

/*向左上方数*/

n1=0 ;

n2=0 ;

for(j=x,k=y;j=1,k=1;j--,k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/*向右下方数*/

for(j=x,k=y;j=18,k=18;j++,k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1=5)

{

return(1);

break ;

}

/*向右上方数*/

n1=0 ;

n2=0 ;

for(j=x,k=y;j=18,k=1;j++,k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/*向左下方数*/

for(j=x,k=y;j=1,k=18;j--,k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1=5)

{

return(1);

break ;

}

return(0);

break ;

}

}

void main()

{

int gdriver=VGA,gmode=VGAHI;

clrscr();

attention();

initgraph(gdriver,gmode,"c:\\tc");

/* setwritemode(XOR_PUT);*/

flag=1 ;

draw_box();

do

{

step_x=0 ;

step_y=0 ;

/*draw_circle(step_x,step_y,8); */

judgewho(step_x-1,step_y-1);

do

{

while(bioskey(1)==0);

key=bioskey(0);

judgekey();

}

while(key!=SPACEkey!=ESC);

}

while(key!=ESC);

closegraph();

}

变色龙引导死机

死机是令操作者颇为烦恼的事情。死机时的表现多为“蓝屏”,无法启动系统,

画面“定格”无反应,鼠标、键盘无法输入,软件运行非正常中断等。尽管造成

死机的原因很多,但是万变不离其宗,其原因永远也脱离不了硬件与软件两方面

由硬件原因引起的死机

【散热不良】

 显示器、电源和CPU在工作中发热量非常大,因此保持良好的通风状况非常重要

,如果显示器过热将会导致色彩、图象失真甚至缩短显示器寿命。工作时间太长

也会导致电源或显示器散热不畅而造成电脑死机。CPU的散热是关系到电脑运行的

稳定性的重要问题,也是散热故障发生的“重灾区”。

【移动不当】

在电脑移动过程中受到很大振动常常会使机器内部器件松动,从而导致接触

不良,引起电脑死机,所以移动电脑时应当避免剧烈振动。

【灰尘杀手】

机器内灰尘过多也会引起死机故障。如软驱磁头或光驱激光头沾染过多灰尘后

,会导致读写错误,严重的会引起电脑死机。

【设备不匹配】

如主板主频和CPU主频不匹配,老主板超频时将外频定得太高,可能就不能保

证运行的稳定性,因而导致频繁死机。

【软硬件不兼容】

三维软件和一些特殊软件,可能在有的微机上就不能正常启动甚至安装,其

中可能就有软硬件兼容方面的问题。

【内存条故障】

主要是内存条松动、虚焊或内存芯片本身质量所致。应根据具体情况排除内

存条接触故障,如果是内存条质量存在问题,则需更换内存才能解决问题。

【硬盘故障】

主要是硬盘老化或由于使用不当造成坏道、坏扇区。这样机器在运行时就很容

易发生死机。可以用专用工具软件来进行排障处理,如损坏严重则只能更换硬盘

了。另外对于在不支持UDMA 66/100的主板,应注意CMOS中硬盘运行方式的设定。

【CPU超频】

超频提高了CPU的工作频率,同时,也可能使其性能变得不稳定。究其原因,

CPU在内存中存取数据的速度本来就快于内存与硬盘交换数据的速度,超频使这种

矛盾更加突出,加剧了在内存或虚拟内存中找不到所需数据的情况,这样就会出

现“异常错误”。解决办法当然也比较简单,就是让CPU回到正常的频率上。

【硬件资源冲突】

是由于声卡或显示卡的设置冲突,引起异常错误。此外,其它设备的中断、

DMA或端口出现冲突的话,可能导致少数驱动程序产生异常,以致死机。解决的办

法是以“安全模式”启动,在“控制面板”→“系统”→“设备管理”中进行适

当调整。对于在驱动程序中产生异常错误的情况,可以修改注册表。选择“运行

”,键入“REGEDIT”,进入注册表编辑器,通过选单下的“查找”功能,找到并

删除与驱动程序前缀字符串相关的所有“主键”和“键值”,重新启动。

【内存容量不够】

内存容量越大越好,应不小于硬盘容量的0.5~1%,如出现这方面的问题,就

应该换上容量尽可能大的内存条。

【劣质零部件】

少数不法商人在给顾客组装兼容机时,使用质量低劣的板卡、内存,有的甚至

出售冒牌主板和Remark过的CPU、内存,这样的机器在运行时很不稳定,发生死机

在所难免。因此,用户购机时应该警惕,并可以用一些较新的工具软件测试电脑

,长时间连续考机(如72小时),以及争取尽量长的保修时间等。

由软件原因引起的死机

【病毒感染】

病毒可以使计算机工作效率急剧下降,造成频繁死机。这时,我们需用杀毒软

件如KV300、金山毒霸、瑞星等来进行全面查毒、杀毒,并做到定时升级杀毒软件

【CMOS设置不当】

该故障现象很普遍,如硬盘参数设置、模式设置、内存参数设置不当从而导致

计算机无法启动。如将无ECC功能的内存设置为具有ECC功能,这样就会因内存错

误而造成死机。

【系统文件的误删除】

由于Windows 9x启动需要有Command.com、Io.sys、Msdos.sys等文件,如果

这些文件遭破坏或被误删除,即使在CMOS中各种硬件设置正确无误也无济于事。

解决方法:使用同版本**作系统的启动盘启动计算机,然后键入“SYS C:”,重

新传送系统文件即可。

【初始化文件遭破坏】

由于Windows 9x启动需要读取System.ini、Win.ini和注册表文件,如果存在

Config.sys、Autoexec.bat文件,这两个文件也会被读取。只要这些文件中存在

错误信息都可能出现死机,特别是System.ini、Win.ini、User.dat、System.dat

这四个文件尤为重要。

【动态链接库文件(DLL)丢失】

在Windows操作系统中还有一类文件也相当重要,这就是扩展名为DLL的动态链

接库文件,这些文件从性质上来讲是属于共享类文件,也就是说,一个DLL文件可

能会有多个软件在运行时需要调用它。如果我们在删除一个应用软件的时候,该

软件的反安装程序会记录它曾经安装过的文件并准备将其逐一删去,这时候就容

易出现被删掉的动态链接库文件同时还会被其它软件用到的情形,如果丢失的链

接库文件是比较重要的核心链接文件的话,那么系统就会死机,甚至崩溃。我们

可用工具软件如“超级兔仔”对无用的DLL文件进行删除,这样会避免误删除。

【硬盘剩余空间太少或碎片太多】

如果硬盘的剩余空间太少,由于一些应用程序运行需要大量的内存、这样就

需要虚拟内存,而虚拟内存则是由硬盘提供的,因此硬盘要有足够的剩余空间以

满足虚拟内存的需求。同时用户还要养成定期整理硬盘、清除硬盘中垃圾文件的

良好习惯。

【BIOS升级失败】

应备份BIOS以防不测,但如果你的系统需要对BIOS进行升级的话,那么在升级

之前最好确定你所使用BIOS版本是否与你的PC相符合。如果BIOS升级不正确或者

在升级的过程中出现意外断电,那么你的系统可能无法启动。所以在升级BIOS前

千万要搞清楚BIOS的型号。如果你所使用的BIOS升级工具可以对当前BIOS进行备

份,那么请把以前的BIOS在磁盘中拷贝一份。同时看系统是否支持BIOS恢复并且

还要懂得如何恢复。

【软件升级不当】

大多数人可能认为软件升级是不会有问题的,事实上,在升级过程中都会对

其中共享的一些组件也进行升级,但是其它程序可能不支持升级后的组件从而导

致各种问题。

【滥用测试版软件】

最好少用软件的测试版,因为测试软件通常带有一些BUG或者在某方面不够稳

定,使用后会出现数据丢失的程序错误、死机或者是系统无法启动。

【非法卸载软件】

不要把软件安装所在的目录直接删掉,如果直接删掉的话,注册表以及

Windows目录中会有很多垃圾存在,久而久之,系统也会变不稳定而引起死机。

【使用盗版软件】

因为这些软件可能隐藏着病毒,一旦执行,会自动修改你的系统,使系统在

运行中出现死机。

【应用软件的缺陷】

这种情况是常见的,如在Win 98中运行那些在DOS或Windows 3.1中运行良好

的16位应用软件。Win 98是32位的,尽管它号称兼容,但是有许多地方是无法与

16位应用程序协调的。还有一些情况,如在Win 95下正常使用的外设驱动程序,

当操作系统升级后,可能会出现问题,使系统死机或不能正常启动。遇到这种情

况应该找到外设的新版驱动。

【启动的程序太多】

这使系统资源消耗殆尽,使个别程序需要的数据在内存或虚拟内存中找不到

,也会出现异常错误。

【非法操作】

用非法格式或参数非法打开或释放有关程序,也会导致电脑死机。请注意要

牢记正确格式和相关参数,不随意打开和释放不熟悉的程序。

【非正常关闭计算机】

不要直接使用机箱中的电源按钮,否则会造成系统文件损坏或丢失,引起自

动启动或者运行中死机。对于Windows 98/2000/NT等系统来说,这点非常重要,

严重的话,会引起系统崩溃。

【内存中冲突】

有时候运行各种软件都正常,但是却忽然间莫名其妙地死机,重新启动后运

行这些应用程序又十分正常,这是一种假死机现象。出现的原因多是Win 98的内

存资源冲突。大家知道,应用软件是在内存中运行的,而关闭应用软件后即可释

放内存空间。但是有些应用软件由于设计的原因,即使在关闭后也无法彻底释放

内存的,当下一软件需要使用这一块内存地址时,就会出现冲突。

变色龙问题 怎样用dd.exe将boot0写入mbr? 变色龙的具体使用方法?

可以用DEBUG。

A:\DEBUG

-A 100

MOV AX,201

MOV BX,200

MOV CX,1

MOV DX,80

INT 13

INT 3

^C

-G=100(将主引导记录读入200H开始的内存中)

-D 3B0 3FF(显示分区表,发现引导标志为“55”而不是“80H”或“00H”)

00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 01

01 00 04 0F 33 4F 33 00-00 00 CD FE 00 00 00 00

01 50 05 0F F3 F0 00 FF-00 00 30 91 0B 00 00 00

00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA

-E 3BE 80(将引导标志改为80)

-E 102 3(修改汇编小程序的第一条语句)

-G=100(将修改后的主引导记录写入硬盘)