用C语言编写的小游戏代码是什么?

核心提示“猜数字小游戏”,每个数字后按空格,最后按回车确认#include<stdio.h>#include<stdlib.h>#include<time.h>int a[4],b[4];int count=0; //计算猜测次数void csh

“猜数字小游戏”,每个数字后按空格,最后按回车确认

#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("nn         猜  数  字  小  游  戏nn");

  printf(“    猜四个数字,如数字与顺序都正确记为A,数字正确位置不对记为B.n”);

}

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个一位整数:nn   ");

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次n   ",m,n,count);

if(m==4)break;

if(count==8){ count=0; break; }

}

printf("n");

if(m==4)printf("     你猜对了(^-^)! 就是:%d %d %d %dn",a[0],a[1],a[2],a[3]);

else printf("     你输了(T-T)!哈哈!应该是:%d %d %d %dn",a[0],a[1],a[2],a[3]);

int z;

printf("     (要继续吗?1或0)n   ");

scanf(“%d”,&z);

if(z==0) break;

}

}

DOS模式下的(文字游戏):

#define SHITOU 0

#define JIANDAO 1

#define BU 2

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

int main()

{

int x,y;

srand ((unsigned)time(NULL));

x = rand() % 3; //随机生成0、1、2

printf ("该你出:0-石头,1-剪刀,2-布n");

scanf ("%d", &y);

switch (x){

case SHITOU:

switch (y){

case SHITOU:

printf("电脑-石头,玩家-石头,平n");

break;

case JIANDAO:

printf("电脑-石头,玩家-剪刀,电脑赢n");

break;

case BU:

printf("电脑-石头,玩家-布,玩家赢n");

break;

}

break;

case JIANDAO:

switch (y){

case SHITOU:

printf("电脑-剪刀,玩家-石头,玩家赢n");

break;

case JIANDAO:

printf("电脑-剪刀,玩家-剪刀,平n");

break;

case BU:

printf("电脑-剪刀,玩家-布,电脑赢n");

break;

}

break;

case BU:

switch (y){

case SHITOU:

printf("电脑-布,玩家-石头,电脑赢n");

break;

case JIANDAO:

printf("电脑-布,玩家-剪刀,玩家赢n");

break;

case BU:

printf("电脑-布,玩家-布,平n");

break;

}

break;

}

return 0;

}

WINDOWS模式下的,用MFC写成(可视,但我不会画那些图案,只好用文字代替):

(PRS.h)

#define SHITOU 0

#define JIANDAO 1

#define BU 2

class CMyApp: public CWinApp

{

public:

virtual BOOL InitInstance ();

};

class CMainWindow: public CframeWnd

{

protected:

int m_nPlayer;

int m_nComputer;

int m_nWinner;

static CRect m_Buttons[3];

static CRect m_ViewPart[2];

static CRect m_Text[2];

public:

CMainWindow ();

protected:

int GetIndex(CPoint& point);

void Judge ();

void ComputerTurn();

void DrawGameText (CDC *pDC, int pos);

void DrawButton (CDC *pDC);

void DrawTittle (CDC *pDC);

protected:

afx_msg void onPaint ();

afx_msg void onLButtonDown (UINT nFlags, CPoint point);

DECLARE_MESSAGE_MAP()

};

(PRS.cpp)

#include <afxwin.h>

#include <stdlib.h>

#include <time.h>

#include "PRS.h"

CMyApp theApp;

BOOL CMyApp::InitInstance ()

{

m_pMainWnd = new CMainWindow;

m_pMainWnd->ShowWindow (m_nCmdShow);

m_pMainWnd->UpdateWindow();

return TRUE;

}

BEGIN_MESSAGE_MAP (CMainWindow, CframeWnd)

ON_WM_PAINT ()

ON_WM_LBUTTonDOWN ()

END_MESSAGE_MAP ()

CRect CMainWindow::m_Buttons[3] =

{

CRect (0, 540, 200, 600),

CRect (200, 540, 400, 600),

CRect (400, 540, 600, 600)

};

CRect CMainWindow::m_ViewPart[2] =

{

CRect (0, 200, 300, 540),

CRect (300, 200, 600, 540)

};

CRect CMainWindow::m_Text[2] =

{

CRect (0, 0, 300, 200),

CRect (300, 0, 600, 200)

};

CMainWindow::CMainWindow ()

{

CString strWnd = AfxRegisterWndClass (

CS_HREDRAW | CS_VREDRAW,

AfxGetApp () -> LoadStandardCursor (IDC_ARROW),

(HBRUSH)(COLOR_3DFACE + 1),

AfxGetApp () -> LoadStandardIcon (IDI_WINLOGO)

);

CreateEx (0, strWnd, _T("猜拳"),

WS_OVERLAPPED | WS_SYSMENU |

WS_CAPTION | WS_MINIMIZEBOX,

CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL);

CRect rect (0, 0, 600, 600);

CalcWindowRect (&rect);

SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(),

SWP_NOZORDER | SWP_NOMOVE | SWP_NOREDRAW);

}

void CMainWindow::onPaint()

{

CPaintDC dc(this);

DrawTittle(&dc);

DrawButton(&dc);

CPen pen(PS_SOLID, 5, RGB(0, 255, 255));

CPen* pOldPen = dc.SelectObject (&pen);

dc.MoveTo (300, 200);

dc.LineTo (300, 480);

dc.SelectObject (pOldPen);

}

void CMainWindow::onLButtonDown(UINT nFlags, CPoint point)

{

int i;

i = GetIndex(point);

if (i == -1)

return;

switch (i){

case SHITOU:

m_nPlayer = SHITOU;

break;

case JIANDAO:

m_nPlayer = JIANDAO;

break;

case BU:

m_nPlayer = BU;

break;

}

ComputerTurn();

Judge();

}

void CMainWindow::DrawTittle(CDC *pDC)

{

CFont font;

font.CreatePointFont (300, _T("黑体"));

pDC->SetBkMode(TRANSPARENT);

CFont* pOldFont = pDC->SelectObject (&font);

pDC->DrawText (_T("电脑"), -1, &m_Text[0], DT_CENTER | DT_SINGLELINE | DT_VCENTER);

pDC->DrawText (_T("玩家"), -1, &m_Text[1], DT_CENTER | DT_SINGLELINE | DT_VCENTER);

pDC->SelectObject (pOldFont);

}

void CMainWindow::DrawButton(CDC *pDC)

{

CBrush brushes[3];

brushes[0].CreateSolidBrush(RGB(100, 60, 30));

brushes[1].CreateSolidBrush(RGB(20, 120, 90));

brushes[2].CreateSolidBrush(RGB(30, 80, 150));

for (int i = 0; i<3; i++){

pDC->Draw3dRect(&m_Buttons[i], RGB(255, 0, 0), RGB(0, 0, 255));

pDC->FillRect(&m_Buttons[i], &brushes[i]);

}

CFont font;

font.CreatePointFont(300, _T("黑体"));

pDC->SetBkMode (TRANSPARENT);

CFont* pOldFont = pDC->SelectObject(&font);

pDC->DrawText(_T("石"), -1, &m_Buttons[0], DT_VCENTER | DT_SINGLELINE | DT_CENTER);

pDC->DrawText(_T("剪"), -1, &m_Buttons[1], DT_VCENTER | DT_SINGLELINE | DT_CENTER);

pDC->DrawText(_T("布"), -1, &m_Buttons[2], DT_VCENTER | DT_SINGLELINE | DT_CENTER);

}

void CMainWindow::ComputerTurn()

{

srand((unsigned)time(NULL));

m_nComputer = rand()%3;

}

void CMainWindow::Judge()

{

CClientDC dc(this);

CFont font;

font.CreatePointFont (500, _T("黑体"));

dc.SetTextColor(RGB(255, 0, 0));

dc.SetBkMode (TRANSPARENT);

CFont* pOldFont = dc.SelectObject(&font);

switch(m_nComputer){

case SHITOU:

dc.DrawText(_T("石头"), &m_ViewPart[0], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

dc.SetTextColor(RGB(0, 0, 255));

switch(m_nPlayer){

case SHITOU:

dc.DrawText(_T("石头"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 0;

break;

case JIANDAO:

dc.DrawText(_T("剪刀"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 1;

break;

case BU:

dc.DrawText(_T("布"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 2;

break;

}

break;

case JIANDAO:

dc.SetTextColor(RGB(255, 0, 0));

dc.DrawText(_T("剪刀"), &m_ViewPart[0], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

dc.SetTextColor(RGB(0, 0, 255));

switch(m_nPlayer){

case SHITOU:

dc.DrawText(_T("石头"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 2;

break;

case JIANDAO:

dc.DrawText(_T("剪刀"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 0;

break;

case BU:

dc.DrawText(_T("布"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 1;

break;

}

break;

case BU:

dc.SetTextColor(RGB(255, 0, 0));

dc.DrawText(_T("布"), &m_ViewPart[0], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

dc.SetTextColor(RGB(0, 0, 255));

switch(m_nPlayer){

case SHITOU:

dc.DrawText(_T("石头"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 1;

break;

case JIANDAO:

dc.DrawText(_T("剪刀"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 2;

break;

case BU:

dc.DrawText(_T("布"), &m_ViewPart[1], DT_CENTER | DT_VCENTER | DT_SINGLELINE);

m_nWinner = 0;

break;

}

break;

}

switch(m_nWinner){

case 0:

MessageBox (_T("平局"), _T("Result"));

Invalidate();

break;

case 1:

MessageBox (_T("电脑胜"), _T("Result"));

Invalidate();

break;

case 2:

MessageBox (_T("玩家胜"), _T("Result"));

Invalidate();

break;

}

}

int CMainWindow::GetIndex(CPoint &point)

{

register int i;

for (i = 0; i < 3; i++)

if (m_Buttons[i].PtInRect(point))

return i;

return -1;

}

 
友情链接
鄂ICP备19019357号-22