篇一 : 用C# Winform写个猜拳小游戏
简介
猜拳游戏,也叫划拳游戏. 顾名思义就是: 2个人在一起划拳,比谁赢,比谁输. 这里的猜拳游戏是人和电脑之间的较量.
原理
原理很简单, 给人3个值(字符串): 剪刀 石头 布. 电脑的出拳用的随机的Random函数得到整型值,然后将其转换成相应的字符串 用于显示在窗体界面上.同时再写一个方法将字符串(剪刀 石头 布)转成成相应的整型值. 写一个裁判的方法 将两者的整型值进行比较,得出输,赢,平局的结果.
界面设计(如图)
代码:
public FingerGuessingGame()
{
InitializeComponent();
//注册各个按钮的鼠标单击事件
this.btnJiandao.Click += (s, e) => { Jiandao(); };
this.btnShitou.Click += (s, e) => { Shitou(); };
this.btnBu.Click += (s, e) => { Bu(); };
}
///
/// 玩家出剪刀
///
public void Jiandao()
{
//将玩家单击按钮的内容显示在玩家出了的label框中
lblPlayer.Text = btnJiandao.Text;
//获取label框中的内容并转换成整数
int vPlayer = ChangeStrToInt(lblPlayer.Text);
//调用裁判的方法 将玩家和电脑的数据进行对比 并显示在结果框中
lblResult.Text = Judge(vPlayer, PC());
}
///
/// 玩家出石头
///
public void Shitou()
{
lblPlayer.Text = btnShitou.Text;
int vPlayer = ChangeStrToInt(btnShitou.Text);
lblResult.Text = Judge(vPlayer, PC());
}
///
/// 玩家出布
///
public void Bu()
{
lblPlayer.Text = btnBu.Text;
int vPlayer = ChangeStrToInt(btnBu.Text);
lblResult.Text = Judge(vPlayer, PC());
}
///
/// 写一个将鼠标点击事件 将字符串转换成相应数值的方法
///
/// 玩家点击的按钮内容
/// 按钮相对应的整数值
public int ChangeStrToInt(string str)
{
int n = 0;
//对传入的字符串进行判断
switch (str)
{
case "剪刀":
n = 1;
break;
case "石头":
n = 2;
break;
case "布":
n = 3;
break;
default:
throw new Exception("未知出法");
}
return n;
}
///
/// 写一个电脑随机出拳的方法
///
/// 电脑的出拳值
public int PC()
{
Random ran = new Random();
//random.Next方法 取最小值,但不取最大值, 所以在1-3内随机取值
int vPC = ran.Next(1, 4);
string strPC = string.Empty;
//进行简单判定 获取的随机值 同时转换成相应的字符串
switch (vPC)
{
case 1:
strPC = "剪刀";
break;
case 2:
strPC = "石头";
break;
case 3:
strPC = "布";
break;
default:
throw new Exception("未知错误:无法判断玩家出的拳!");
}
lblPC.Text = strPC;//显示电脑出的拳
return vPC;
}
///
/// 比较玩家和电脑的值 判断谁赢谁输
///
/// 玩家的出拳值
/// 电脑的出拳值
public string Judge(int Player, int PC)
{
//剪刀1 石头2 布3
//赢的情况有2种 1种是 玩家比电脑值大1 一种是小2
int tmp = Player - PC;
string judgedResult = string.Empty;
if (tmp == 1 || tmp == -2)
judgedResult = "你赢了";
//平的情况只有1种 即为出拳相同
else if (tmp == 0)
judgedResult = "平局";
//除此之外 只有输的情况了
else
judgedResult = "你输了";
return judgedResult;
}效果测试:
这样一个猜拳小游戏就做好了!~~~:)
篇二 : 用c语言编一个小游戏
用c语言编一个小游戏
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#include "stdlib.h"
#include "math.h"
void initgr(void){
int gd=DETECT,gm;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,"");
}
int x1=200,y1=100;
char accept,*p,*q;
int *you;
void turn_right(char accept);
void turn_left(char accept) ;
void turn_down(char accept) ;
void change();
void main()
{
int i;
int polygon1[18],polygon2[18],polygon3[18],polygon4[18];
/*第一方块*/
polygon1[0]=x1;
polygon1[1]=y1;
polygon1[2]=x1+30;
polygon1[3]=y1;
polygon1[4]=x1+30;
polygon1[5]=y1+10;
polygon1[6]=x1+20;
polygon1[7]=y1+10;
polygon1[8]=x1+20;
polygon1[9]=y1+20;
polygon1[10]=x1+10;
polygon1[11]=y1+20;
polygon1[12]=x1+10;
polygon1[13]=y1+10;
polygon1[14]=x1;
polygon1[15]=y1+10;
polygon1[16]=x1;
polygon1[17]=y1;
/*第二方块*/
polygon2[0]=x1+10;
polygon2[1]=y1;
polygon2[2]=x1+20;
polygon2[3]=y1;
polygon2[4]=x1+20;
polygon2[5]=y1+30;
polygon2[6]=x1+10;
polygon2[7]=y1+30;
polygon2[8]=x1+10;
polygon2[9]=y1+20;
polygon2[10]=x1;
polygon2[11]=y1+20;
polygon2[12]=x1;
polygon2[13]=y1+10;
polygon2[14]=x1+10;
polygon2[15]=y1+10;
polygon2[16]=x1+10;
polygon2[17]=y1;
you=polygon2;
initgr();
/*设置方块*/
setcolor(RED);
setbkcolor(8);
setfillstyle(1,RED);
drawpoly(9,polygon2);
floodfill(x1+14,y1+14,RED);
setcolor(14);
drawpoly(9,polygon2);
/*把方块信息载入*/
p=malloc(imagesize(x1,y1,x1+30,y1+20)); /*enter=13*/
getimage(x1,y1,x1+30,y1+30,p);
/*接受字符判断和实现方块的具体移动*/
accept=getch();
while(accept!='*'){
if(accept=='d'||accept=='D')
turn_right(accept);
else if(accept=='a'||accept=='A')
turn_left(accept);
else if(accept=='s'||accept=='S')
turn_down(accept);
accept=getch();
/* if(accept==13) change(); */
}
/*结束函数*/
closegraph();
}
void turn_right(char accept) /*把方块向右移动*/
{
while(accept=='d'||accept=='D'){
putimage(x1,y1,p,1);
x1+=10;
putimage(x1,y1,p,1);
accept=getch();
/* if(accept==13) change(); */
delay(100000000000000000000000000);
}
}
void turn_left(char accept) /*把方块向左移动*/
{
while(accept=='a'||accept=='A'){
putimage(x1,y1,p,1);
x1-=10;
putimage(x1,y1,p,1);
accept=getch();
/* if(accept==13) change(); */
delay(100000000000000000000000000);
}
}
void turn_down(char accept) /*把方块向下移动*/
{
while(accept=='s'||accept=='S'){
putimage(x1,y1,p,1);
y1+=3;
putimage(x1,y1,p,1);
accept=getch();
/* if(accept==13) change(); */
delay(1000000);
}
}
/*void change()
{
setcolor(8);
setfillstyle(1,8);
rectangle(x1,y1,x1+30,y1+30);
floodfill(x1+15,y1+15,8);
setcolor(RED);
setbkcolor(8);
setfillstyle(1,RED);
drawpoly(9,you);
floodfill(x1+14,y1+14,RED);
setcolor(14);
drawpoly(9,you);
p=malloc(imagesize(x1,y1,x1+30,y1+20));
getimage(x1,y1,x1+30,y1+30,p);
}
*/