具體代碼如下:
在麻山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需網(wǎng)站設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,麻山網(wǎng)站建設(shè)費(fèi)用合理。
#include windows.h
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cursor_info);
}
函數(shù)和結(jié)構(gòu)體都在windows.h中定義。
CONSOLE_CURSOR_INFO結(jié)構(gòu)體定義如下:
typedef struct
{?DWORD?dwSize;
BOOL?bVisible; //為0時光標(biāo)不可見
}CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
VC,MinGW中均沒問題。
擴(kuò)展資料:
指針
如果一個變量聲明時在前面使用 * 號,表明這是個指針型變量。換句話說,該變量存儲一個地址,而 *(此處特指單目運(yùn)算符 * ,下同。C語言中另有 雙目運(yùn)算符 *) 則是取內(nèi)容操作符,意思是取這個內(nèi)存地址里存儲的內(nèi)容。指針是 C 語言區(qū)別于其他同時代高級語言的主要特征之一。
指針不僅可以是變量的地址,還可以是數(shù)組、數(shù)組元素、函數(shù)的地址。通過指針作為形式參數(shù)可以在函數(shù)的調(diào)用過程得到一個以上的返回值,不同于return(z)這樣的僅能得到一個返回值。
指針是一把雙刃劍,許多操作可以通過指針自然的表達(dá),但是不正確的或者過分的使用指針又會給程序帶來大量潛在的錯誤。
參考資料來源:百度百科-c語言
#includewindows.h
voidhidecursor()
{
console_cursor_infocursor_info={1,0};
setconsolecursorinfo(getstdhandle(std_output_handle),cursor_info);
}
函數(shù)和結(jié)構(gòu)體都在windows.h中定義,函數(shù)用法簡單就不說了。
console_cursor_info結(jié)構(gòu)體定義如下:
typedefstruct
{dworddwsize;
boolbvisible;//為0時光標(biāo)不可見
}console_cursor_info,*pconsole_cursor_info;
vc,mingw中均沒問題。
不明白直接hi。
#include windows.h void HideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cursor_info); } 函數(shù)和結(jié)構(gòu)體都在windows.h中定義,函數(shù)用法簡單就不說了。 CONSOLE_CURSOR_INFO結(jié)構(gòu)體定義如下: typedef struct { DWORD dwSize; BOOL bVisible; //為0時光標(biāo)不可見 }CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; VC,MinGW中均沒問題。 不明白直接Hi。
要用寄存器
使用的時候copy代碼直接調(diào)用no_text_cursor()函數(shù)就可以了~
樓主自己看著辦吧
#includestdio.h
#includedos.h
void no_text_cursor(void);
int main()
{
no_text_cursor();
printf("abc");
getch();
return 0;
}
void no_text_cursor(void)
{
union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,r,r);
}
比如編寫下面這個模擬發(fā)射子彈“殲滅敵機(jī)”的小游戲,也可寫很多其它的游戲:
#include stdio.h
#include conio.h
#include stdlib.h
#include windows.h
#include time.h
#define zlx 10 ?//增量坐標(biāo)(x)讓游戲框不靠邊
#define zly 3?? //增量坐標(biāo)(y)讓游戲框不靠邊
#define W 26? //游戲框的寬度
#define H 24 ?//游戲框的高度
int jiem[22][22]={0}, wj=10;? //界面數(shù)組, 我機(jī)位置(初值為10)
int speed=4,density=30; ?//敵機(jī)速度, 敵機(jī)密度
int score=0,death=0; ??//玩家成績,死亡次數(shù)
void gtxy (int x, int y) ?//控制光標(biāo)位置的函數(shù)
{ COORD pos;
pos.X = x;? pos.Y = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
void?Color(int?a) ?//設(shè)定顏色的函數(shù)(a應(yīng)為1-15)
{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }
void yinc(int x,int y) ? //隱藏光標(biāo)的函數(shù)
{ CONSOLE_CURSOR_INFO ?gb={x,y};? ?//x為1-100, y為0或1
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), gb);
}
void csh( )? //初始化函數(shù)
{ int i;
Color(7);
gtxy(zlx,zly); printf("╔");? gtxy(zlx+W-2,zly); printf("╗");? //左上角和右上角的框角
gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下邊兩框角
for(i=2;iW-2;i+=2) {gtxy(zlx+i,zly);? printf("═"); }? ????//打印上橫框
for(i=2;iW-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } ?//打印下橫框
for(i=1;iH-1;i++) { gtxy(zlx,zly+i); ?printf("║"); }? ?????//打印左豎框
for(i=1;iH-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); }? //打印右豎框
Color(14);gtxy(19,2); printf("殲滅敵機(jī)"); Color(10);
gtxy(37,5); printf("設(shè)置:Esc ");
gtxy(37,7); printf("發(fā)射:↑ ");
gtxy(37,9); printf("控制:← → ");
gtxy(37,11);printf("得分:%d",score);
gtxy(37,13); printf("死亡:%d",death);
yinc(1,0);? //隱藏光標(biāo)(光標(biāo)粗細(xì)值為1,性質(zhì)為隱藏即0)
}
void qcjm( ) ?//清除界面函數(shù)
{ int i,j;
for(i=0;iH-2;i++)
for(j=0;jW-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}
}
void feiji( ) ?//飛機(jī)移動函數(shù)
{ int i,j;
for(i=21;i=0;i--)? //從底行往上是為了避免敵機(jī)直接沖出數(shù)組
for(j=0;j22;j++)
?{if(i==21jiem[i][j]==3)?jiem[i][j]=0;? //底行賦值0 以免越界
? ?if(jiem[i][j]==3)?jiem[i][j]=0, jiem[i+1][j]=3;
?}
if(jiem[20][wj]==3jiem[21][wj]==1) death++;
}
void zidan( ) ?//子彈移動的函數(shù)
{ int i,j;
for(i=0;i22;i++)
for(j=0;j22;j++)
?{if(i==0jiem[i][j]==2) jiem[i][j]=0;
if(jiem[i][j]==2) {?if(jiem[i-1][j]==3) score+=100,printf("\7");
? jiem[i][j]=0,jiem[i-1][j]=2; }
?}
}
void print( ?) ?//輸出界面的函數(shù)
{int i,j;
qcjm( );
for(i=0;i22;i++)
for(j=0;j22;j++)
{ gtxy(12+j,4+i);
if(jiem[i][j]==3) {Color(13);printf("□");}
if(jiem[i][j]==2) {Color(10);printf(".");}
if(jiem[i][j]==1) {Color(10);printf("■");}
}
gtxy(37,11); Color(10);printf("得分:%d",score);
gtxy(37,13); printf("死亡:%d",death);
}
void setting( )? //游戲設(shè)定函數(shù)
{ qcjm( );
gtxy(12,4);printf("選擇敵機(jī)速度:");
gtxy(12,5);printf("? 1.快 2.中 3.慢");
switch(getche( ))
{case '1': speed=2; break;
?case '2': speed=4; break;
?case '3': speed=5; break;
?default: gtxy(12,6);printf("? 錯誤!默認(rèn)值");
}
gtxy(12,7);printf("選擇敵機(jī)密度:");
gtxy(12,8);printf("? 1.大 2.中 3.小");
switch(getche( ))
?{case '1': density=20; break;
? case '2': density=30;?break;
? case '3': density=40; break;
? ?default: gtxy(12,9);printf("? 錯誤!默認(rèn)值");
}
for(int i=0;i22;i++)
for(int j=0;j22;j++)jiem[i][j]=0;
jiem[21][wj=10]=1; jiem[0][5]=3;
gtxy(12,10);printf("? 按任意鍵保存...");
getch( );
qcjm( );
}
void run( ) ?//游戲運(yùn)行的函數(shù)
{ int m=0,n=0;
jiem[21][wj]=1;? //值為1代表我機(jī)(2則為子彈)
jiem[0][5]=3;? ?//值為3代表敵機(jī)
SetConsoleTitle("殲滅敵機(jī)"); ?//設(shè)置窗口標(biāo)題(在窗口左上角顯示這四個字)
while(1)
{?if (kbhit( ))
{ int key;
? if((key=getch( ))==224) key=getch( );
? switch(key)? //控制左右移動和進(jìn)入菜單
? ? {case 75: if(wj0) jiem[21][wj]=0,jiem[21][--wj]=1; break;
? ?? case 77: if(wj20)?jiem[21][wj]=0,jiem[21][++wj]=1;?break;
? ?? case 72: jiem[20][wj]=2; break;
? ?? case 27: setting( );
?? }
}
if(++n%density==0)? //控制產(chǎn)生敵機(jī)的速度
?{ n=0;srand((unsigned)time(NULL));
? ?jiem[0][rand( )%20+1]=3;
?}
if(++m%speed==0) {feiji( ); m=0;} //控制敵機(jī)移動速度
zidan( );
print( );
Sleep(150); ?//延時150毫秒
}
}
int main( )
{ csh( );
run( );
return 0;
}
本文標(biāo)題:c語言隱藏光標(biāo)的函數(shù) C語言光標(biāo)定位函數(shù)
文章分享:http://m.kartarina.com/article34/dodsdpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站策劃、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)