㈠ C語言簡易文字冒險游戲源代碼
記憶游戲
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
#defineN10
intmain()
{inti,k,n,a[N],b[N],f=0;
srand(time(NULL));
printf("按1開始 按0退出:_");
scanf("%d",&n);
system("cls");
while(n!=0)
{for(k=0;k<N;k++)a[k]=rand()%N;
printf(" [請您牢記看到顏色的順序] ");
for(k=0;k<N;k++)
{switch(a[k])
{case0:system("color90");printf("0:淡藍色 ");break;//淡藍色
case1:system("colorf0");printf("1:白色 ");break;//白色
case2:system("colorc0");printf("2:淡紅色 ");break;//淡紅色
case3:system("colord0");printf("3:淡紫色 ");break;//淡紫色
case4:system("color80");printf("4:灰色 ");break;//灰色
case5:system("colore0");printf("5:黃色 ");break;//黃色
case6:system("color10");printf("6:藍色 ");break;//藍色
case7:system("color20");printf("7:綠色 ");break;//綠色
case8:system("color30");printf("8:淺綠色 ");break;//淺綠色
case9:system("color40");printf("9:紅色 ");break;//紅色
}
Sleep(1500);
system("colorf");//單個控制文字顏色
Sleep(100);
}
system("cls");
printf("0:淡藍色,1:白色,2:淡紅色,3:淡紫色,4:灰色,5:黃色,6:藍色7:綠色,8:淺綠色,9:紅色 ");
printf(" 請輸入顏色的順序:");
for(k=0;k<N;k++)scanf("%d",&b[k]);
for(k=0;k<N;k++)if(a[k]==b[k])f++;
if(f==0)printf("你的記憶弱爆了0 ");
elseif(f==1)printf("你的記憶有點弱1 ");
elseif(f<5)printf("你的記憶一般<5 ");
elseprintf("你的記憶力很強! ");
Sleep(2000);
system("cls");
printf(" 按0退出 按任意鍵繼續游戲: ");
scanf("%d",&n);
system("cls");
}
return0;
}
註:DEVc++運行通過,每輸入一個數字要加入一個空格。
㈡ 用C語言編寫的小游戲代碼是什麼
「猜數字小游戲」,每個數字後按空格,最後按回車確認
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int a[4],b[4];
int count=0; //計算猜測次數
void csh( ); //初始化
void start( ); //開始游戲
int main( )
{ csh( );
start( );
}
void csh( ) //初始化
{ printf(" 猜 數 字 小 游 戲 ");
printf(「 猜四個數字,如數字與順序都正確記為A,數字正確位置不對記為B. 」);
}
void start( ) //開始游戲
{int m,n; //m是完全猜對的個數,n是順序不對的個數
while(1)
{srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )
while(1) { for(int i=0;i<4;i++) a[i]=rand( )%10; //rand( )函數每次隨機產生一個0-9的數
if( (a[3]!=a[2]&&a[3]!=a[1]&&a[3]!=a[0])&&
(a[2]!=a[1]&&a[2]!=a[0])&&a[1]!=a[0] ) break; } //4個隨機數各自不相等
printf(" 請依次輸入4個一位整數: ");
while(1)
{for(int i=0;i<4;i++) scanf(「%d」,&b[i]);
printf(" 你輸入的是:%d %d %d %d ",b[0],b[1],b[2],b[3]);
m=0;n=0;
for(int i=0;i<4;i++)
{for(int j=0;j<4;j++)
{ if(b[i]==a[j]&&i==j)m=m+1; if(b[i]==a[j]&&i!=j)n=n+1; }
}
count=count+1;
printf(" %dA %dB 你試了%d次 ",m,n,count);
if(m==4)break;
if(count==8){ count=0; break; }
}
printf(" ");
if(m==4)printf(" 你猜對了(^-^)! 就是:%d %d %d %d ",a[0],a[1],a[2],a[3]);
else printf(" 你輸了(T-T)!哈哈!應該是:%d %d %d %d ",a[0],a[1],a[2],a[3]);
int z;
printf(" (要繼續嗎?1或0) ");
scanf(「%d」,&z);
if(z==0) break;
}
}
㈢ 用C語言設計一個「三子棋」的游戲,要求用上下左右游標控制。要程序源代碼!
#include <iostream>
#include <string>
using namespace std;
class CGobang //棋子類
{
private:
char chSort; //棋子的類別
int nWin; //贏棋的次數
int nLose; //輸棋的次數
static int nDraw; //平局次數
static char achBoard[3][3]; //棋盤
static int nSize; //棋盤的尺寸 nSize X nSize
public:
CGobang(char chsort) //構造函數,決定一方棋子的類別
{
chSort=chsort;
nWin=nLose=nDraw=0;
}
void PlayTurn(void); //走1步棋
int Judge(); //判斷是否連成一線,是則返回1,否則返回0
void Win(void); //贏棋
void Lose(void); //輸棋
static void Draw(void); //平局
void PrintInfo(void); //輸出總體情況
static void PrintBoard(void); //輸出棋盤
static int GetFull(void); //判斷棋盤是否已布滿棋子
static void InitialBoard(void); //初始化棋盤
};
char CGobang::achBoard[3][3];
int CGobang::nSize = 3;
int CGobang::nDraw = 0;
void CGobang::Draw()
{
cout << "\n\n\t\t平局!\n\n";
nDraw++;
}
void CGobang::InitialBoard() //初始化棋盤
{
for(int i=0;i<nSize;i++)
for(int j=0;j<nSize;j++)
achBoard[i][j]=' ';
}
void CGobang::PrintBoard() //輸出棋盤
{
cout << endl;
cout << " 1 2 3 " << endl;
cout << "1 " << achBoard[0][0] << " | " << achBoard[0][1] << " | " << achBoard[0][2] << endl;
cout << " ---|---|---" << endl;
cout << "2 " << achBoard[1][0] << " | " << achBoard[1][1] << " | " << achBoard[1][2] << endl;
cout << " ---|---|---" << endl;
cout << "3 " << achBoard[2][0] << " | " << achBoard[2][1] << " | " << achBoard[2][2] << endl;
cout << endl;
cout << endl;
}
int CGobang::GetFull() //判斷棋盤是否布滿棋子,若是返回1
{
for(int i=0;i<nSize;i++)
for(int j=0;j<nSize;j++)
if(achBoard[i][j]!=' ')
return 0;
return 1;
}
void CGobang::Win() //贏棋
{
cout << "\n\n\t\t"<<chSort<<"方獲勝!\n\n";
nWin++;
}
void CGobang::Lose() //輸棋
{
nLose++;
}
void CGobang::PlayTurn(void) //走1步棋
{
int nRow,nCol;
cout <<"現在該 "<<chSort<<" 方下棋,請輸入棋盤坐標(x,y):";
do
{
cin >> nRow >> nCol; //輸入坐標
if(nRow>nSize || nCol>nSize) //判斷坐標越界
cout <<"輸入的坐標越界,x與y的范圍應小於等於"<<nSize<<",請重新輸入\n";
else if(achBoard[nRow-1][nCol-1]!=' ') //判斷坐標合理
cout <<"棋盤("<<nRow <<" ,"<<nCol <<")處已有棋子,請重新輸入\n";
else
{
achBoard[nRow-1][nCol-1]=chSort; //在坐標處放上棋子
break; //退出循環
}
}while(1);
}
int CGobang::Judge() //判斷是否棋子連成一線,若是返回1
{//以下是各種可能連成一線的情況
if(achBoard[0][0]==chSort && achBoard[1][1]==chSort && achBoard[2][2]==chSort)
return 1;
else if(achBoard[2][0]==chSort && achBoard[1][1]==chSort && achBoard[0][2]==chSort)
return 1;
else if(achBoard[0][0]==chSort && achBoard[1][0]==chSort && achBoard[2][0]==chSort)
return 1;
else if(achBoard[0][1]==chSort && achBoard[1][1]==chSort && achBoard[2][1]==chSort)
return 1;
else if(achBoard[0][2]==chSort && achBoard[1][2]==chSort && achBoard[2][2]==chSort)
return 1;
else if(achBoard[0][0]==chSort && achBoard[0][1]==chSort && achBoard[0][2]==chSort)
return 1;
else if(achBoard[1][0]==chSort && achBoard[1][1]==chSort && achBoard[1][2]==chSort)
return 1;
else if(achBoard[2][0]==chSort && achBoard[2][1]==chSort && achBoard[2][2]==chSort)
return 1;
else
return 0; //沒有連成一線則返回0
}
void CGobang::PrintInfo(void) //列印總體情況
{
cout <<"Side "<<chSort<<"方共計贏 "<<nWin<<" 局,輸 "<<nLose<<" 局,平 "<<nDraw<<" 局。"<<endl;
}
void PrintRule(void) //列印規則
{
cout << "\t\t歡迎使用三子連珠游戲!" << endl << endl;
cout << "\t游戲規則:" << endl;
cout << "\t1.每1步輸入要下棋的格子的x,y坐標,按Enter鍵\n";
cout << "\t2.有1方首先3個棋子連成一線即判獲勝\n";
cout << "\t3.當棋子布滿棋盤但仍無獲勝方即為平局\n";
cout << "\t4.X方先行\n";
cout << "\n\n\t\t請按任意鍵開始下棋!\n\n";
}
int JudgePlay(CGobang & SideX,CGobang & SideO) //每下1步要進行輸贏的判斷,有結果則返回1
{
if(SideX.Judge()) //X方獲勝
{
SideX.Win();
SideO.Lose();
return 1;
}
else if(SideO.Judge()) //O方獲勝
{
SideO.Win();
SideX.Lose();
return 1;
}
else
return 0;
}
void Play(CGobang & SideX,CGobang & SideO) //開始一局游戲
{
while(1)
{
CGobang::PrintBoard(); //輸出棋盤
SideX.PlayTurn(); //X方下棋
if(JudgePlay(SideX,SideO)) //判斷輸贏
break;
if(CGobang::GetFull()) //判斷是否平局
{
CGobang::Draw();
break;
}
CGobang::PrintBoard(); //輸出棋盤
SideO.PlayTurn(); //O方下棋
if(JudgePlay(SideX,SideO)) //判斷輸贏
break;
if(CGobang::GetFull()) //判斷是否平局
{
CGobang::Draw();
break;
}
}
}
int main(void)
{
CGobang SideX('X'),SideO('O'); //定義兩個棋子類對象,分別代表X方與O方
PrintRule();
cin.get();
string strChoice;
do
{
CGobang::InitialBoard(); //初始化棋盤
Play(SideX,SideO); //開始下一局
cout << "是否繼續(Y/N)?";
cin >> strChoice;
}while(strChoice == "Y" || strChoice == "y");
SideX.PrintInfo();
SideO.PrintInfo();
cout << "\n\n\t歡迎再次使用三子連珠游戲!" << endl << endl;
return 0;
}
㈣ c語言猜數字游戲源代碼
小游戲2048:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
int jsk( ); //計算空格數
void rsgm( ); //重置游戲
void inkey( ); //按鍵輸入
void left( ); //向左移動
void right( ); //向右移動
void up( ); //向上移動
void down( ); //向下移動
void show( ); //輸出界面
void adnum( ); //添加隨機數
void yes( ); //游戲是否結束(1是0否)
void gtxy(int x, int y); //控制游標位置的函數
int a[4][4]; //存儲16個格子中的數字
int score = 0; //每局得分
int best = 0; //最高得分
int ifnum; //是否需要添加數字(1是0否)
int over; //游戲結束標志(1是0否)
int i,j,k;
int main( )
{ rsgm( ); //重置游戲
inkey( ); //按鍵輸入
return 0;
}
void Color(int a) //設定字元顏色的函數(a應為1-15)
{ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a); }
void rsgm( ) //重置游戲
{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0)); //啟動隨機數發生器
int n = rand( ) % 16; //隨機函數產生0-15的數字
for (i = 0; i < 4; i++)
{for (j = 0; j < 4; j++)
{ if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }
else { a[i][j] = 4; } n--; }
else { a[i][j] = 0; n--; }
}
}
adnum( );
system("cls");
CONSOLE_CURSOR_INFO gb={1,0}; //以下兩行是隱藏游標的設置,gb代指游標
SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE), &gb );
Color(14); //設置字體淡黃色
printf(" 2048小游戲"); Color(7); //恢復白字黑底
printf(" ┌──────┬──────┬──────┬──────┐");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" └──────┴──────┴──────┴──────┘");
show( );
}
void show( ) //輸出界面
{ for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ gtxy(7*j+9,2*i+4); //gtxy(7*j+9, 2*i+4)是游標到指定位置輸出數字
if(a[i][j]==0){printf(" "); Color(7); printf("│");}
else if(a[i][j]<10){ if (a[i][j] == 2) { Color(14); }
else if (a[i][j] == 4) { Color(13); }
else if (a[i][j] == 8) { Color(12); }
printf(" %d ", a[i][j]); Color(7 ); printf("│");
}
else if (a[i][j] < 100){if (a[i][j] == 16) { Color(12); }
else if (a[i][j] == 32) { Color(10); }
else if (a[i][j] == 64) { Color(2 ); }
printf(" %d ", a[i][j]); Color(7); printf("│");
}
else if (a[i][j] < 1000) {if (a[i][j] == 128) { Color(9); }
else if (a[i][j] == 256) { Color(1); }
else if (a[i][j] == 512) { Color(13); }
printf(" %d ", a[i][j]); Color(7); printf("│");
}
else if (a[i][j] < 10000) {if (a[i][j] == 1024) { Color(5); }
else { Color(15); }
printf(" %d ", a[i][j]); Color(7); printf("│");
}
}
if (jsk( ) == 0)
{ yes( ); if (over) { gtxy(9,12); Color(10);
printf(" 游戲結束!是否繼續? [ Y/N ]:"); }
}
}
void inkey( ) //按鍵輸入
{ int key;
while (1)
{ key = getch( );
if (over) { if (key == 89|| key == 121) { rsgm( ); continue; }
else if (key == 78|| key == 110) { return; }
else continue; }
ifnum = 0;
if(key==224)key=getch( );
switch (key)
{ case 75: left( ); break;
case 77: right( ); break;
case 72: up( ); break;
case 80: down( );break;
}
if (score > best) { best = score; }
if (ifnum) { adnum( ); show( ); }
}
}
int jsk( ) //計算空格數
{ int n = 0;
for (i = 0; i < 4; i++)
{ for (j = 0; j < 4; j++) { if ( a[i][j] == 0) {n++;} } }
return n;
}
void left( ) //向左移動
{ for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{ if (a[i][j] > 0)
{ if ( a[i][k] == a[i][j])
{ a[i][k] *= 2; k++;
score = score + 2 * a[i][j];
a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }
k++; }
}
}
}
}
void right( ) //向右移動
{for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[i][j] > 0)
{ if (a[i][k] == a[i][j])
{a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }
}
}
}
}
void up( ) //向上移動
{for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{if (a[j][i] > 0)
{if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];
a[j][i] = 0; ifnum = 1; }
else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }
k++; }
}
}
}
}
void down( ) //向下移動
{ for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[j][i] > 0)
{if (a[k][i] == a[j][i])
{a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }
else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else {a[k - 1][i] = a[j][i];
if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }
}
}
}
}
void adnum( ) //添加隨機數
{ srand(time(0)); int n = rand( ) % jsk( );
for (int i = 0; i < 4; i++)
{for (int j = 0; j < 4; j++)
{ if (a[i][j] == 0) {if (n != 0) { n--; }
else {int k = rand( ) % 3;
if (k == 0 || k == 1) {a[i][j] = 2; return; }
else {a[i][j] = 4; return; } }
}
}
}
}
void yes( ) //游戲是否結束
{ for (int i = 0; i < 4; i++)
{for (int j = 0; j < 3; j++)
{if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}
}
over = 1;
}
void gtxy(int x, int y) //控制游標位置的函數
{ COORD zb; //zb代指坐標
zb.X = x;
zb.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb);
}
㈤ 求用C語言編寫小游戲的源代碼,不管什麼小游戲,源代碼簡單些,適合初學者,3Q。
/*21點游戲*/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void )
{
int a,b,c,d,s,x,t,i,n,k;
s=200,k=1000;
x=t=i=1,a=b=c=d=n=0;
srand((int)time(0));
printf(" 21點游戲
★游戲規則: \n 游戲開始後系統將隨機產生1到10之間的數並累加.
1.在點數不大於21時,點數大者贏,點數相等算平局;
2.若一方點數大於21,一方點數小於21,小於21的一方贏;
3.若兩方均大於21,則算平局;
4.獲勝者獲得相應賭注金幣,金幣到零則結束游戲 .\n (注:繼續加點選1,不繼續加點選任意非1數)\n\n##########################\n\n") ;
do {
while(x==1)
{
if(t==1)
{
c=rand()%8+3;
a=rand()%10+1;
}
if(t==2)
{
a=rand()%5+1;
c=rand()%4+1;
}
if(t==3)
{
c=rand()%3+1;
a=rand()%3+1;
}
if(t==4)
{
a=rand()%2+1;
c=rand()%3+1;
}
if(t==5)
a=rand()%8+1;
if(t==6)
a=rand()%3+1;
b+=a,d+=c;
if(d>16)
t=2;
if(d==19&&b==19)
t=3;
if(d==20&&b==20)
t=3;
if(b==20&&d==19)
t=4;
if(d==19&&(d-b)>3)
t=5;
if(d==20&&d>b)
t=6;
if(d==21)
t=6;
if(i==1)
{
do
{
printf(" 您現在還有%d個金幣,系統有%d個,請輸入賭注: ",s,k);
scanf("%d",&n);
}
while(s<n);
i++;
}
if(b>21&&d<22)
{
printf(" 你%d點,系統%d點,你輸了!\n\n\n\n",b,d);
s-=n;
k+=n;
t=i=1,b=d=0;
break;
}
if(d>21&&b<22)
{
printf(" 你%d點,系統%d點,你贏了!\n\n\n\n",b,d);
s+=n;
k-=n;
t=i=1,b=d=0;
break;
}
if(d>21&&b>21)
{
printf(" 你%d點,系統%d點,平局!
\n\n\n",b,d);
t=i=1,b=d=0;
break;
}
printf(" 您加%d點,系統加%d點!\n 您現在共 %d點,系統現在共 %d點!\n 是否繼續加點 ",a,c,b,d);
scanf(" %d",&x);
a=c=0;
if(x!=1)
{
if(d<b&&d<18)
{
c=rand()%4+2;
d=d+c;
printf("您不加點,系統加%d點",c);
}
if(d<b&&d==20)
{
c=rand()%2+1;
d=d+c;
printf("您不加點,系統加%d點",c);
}
if(d<b&&d==19)
{
c=rand()%4+1;
d=d+c;
printf("您不加點,系統加%d點",c);
}
if(d<b&&d==18)
{
c=rand()%5+1;
d=d+c;
printf("您不加點,系統加%d點",c);
}
if(d>b)
printf("您不加點,系統不加點");
if(d<22&&d>b)
{
printf(" 你%d點,系統%d點,你輸了!\n\n\n\n",b,d);
s-=n;
k+=n;
t=x=i=1,b=d=0;
break;
}
if(b>d&&b<22||b<22&&d>21)
{
printf(" 你%d點,系統%d點,你贏了!\n\n\n\n",b,d);
s+=n;
k-=n;
t=x=i=1,b=d=0;
break;
}
if(b==d)
{
printf(" 你%d點,系統%d點,平局!
\n\n\n\n",b,d);
t=x=i=1,b=d=0;
break;
}
}
}
}
while(s>0&&k>0);
printf("您有%d個金幣,系統有%d個金幣!\n\n" ,s,k);
if(s>k)
printf("太棒了,你把系統打敗了!!!\n");else if(k>s)
printf(" 您的金幣不足,挑戰系統失敗!\n");
return 0;
}