b2c信息网

您现在的位置是:首页 > 最近新闻 > 正文

最近新闻

简单的代码游戏(简单的代码游戏制作)

hacker2022-05-30 08:12:33最近新闻144
本文导读目录:1、求几C语言个小游戏代码,简单的,要注释、、谢谢了、
本文导读目录:

求几C语言个小游戏代码,简单的,要注释、、谢谢了、

// Calcu24.cpp : Defines the entry point for the console application.

//

/*

6-6

24点游戏

*/

#include "conio.h"

#include "stdlib.h"

#include "time.h"

#include "math.h"

#include "string.h"/*

从一副扑克牌中,任取4张。

2-10 按其点数计算(为了表示方便10用T表示),J,Q,K,A 统一按 1 计算

要求通过加减乘除四则运算得到数字 24。

本程序可以随机抽取纸牌,并用试探法求解。

*/void GivePuzzle(char* buf)

{

char card[] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'}; for(int i=0; i4; i++){

buf[i] = card[rand() % 13];

}

}

void shuffle(char * buf)

{

for(int i=0; i5; i++){

int k = rand() % 4;

char t = buf[k];

buf[k] = buf[0];

buf[0] = t;

}

}

int GetCardValue(int c)

{

if(c=='T') return 10;

if(c='0' c='9') return c - '0';

return 1;

}

char GetOper(int n)

{

switch(n)

{

case 0:

return '+';

case 1:

return '-';

case 2:

return '*';

case 3:

return '/';

} return ' ';

}double MyCalcu(double op1, double op2, int oper)

{

switch(oper)

{

case 0:

return op1 + op2;

case 1:

return op1 - op2;

case 2:

return op1 * op2;

case 3:

if(fabs(op2)0.0001)

return op1 / op2;

else

return 100000;

} return 0;

}

void MakeAnswer(char* answer, int type, char* question, int* oper)

{

char p[4][3];

for(int i=0; i4; i++)

{

if( question[i] == 'T' )

strcpy(p[i], "10");

else

sprintf(p[i], "%c", question[i]);

}

switch(type)

{

case 0:

sprintf(answer, "%s %c (%s %c (%s %c %s))",

p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

break;

case 1:

sprintf(answer, "%s %c ((%s %c %s) %c %s)",

p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

break;

case 2:

sprintf(answer, "(%s %c %s) %c (%s %c %s)",

p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

break;

case 3:

sprintf(answer, "((%s %c %s) %c %s) %c %s",

p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

break;

case 4:

sprintf(answer, "(%s %c (%s %c %s)) %c %s",

p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

break;

}

}

bool TestResolve(char* question, int* oper, char* answer)

{

// 等待考生完成

int type[5]={0,1,2,3,4};//计算类型

double p[4];

double sum=0;

//

for(int i=0; i4; i++) //循环取得点数

{

p[i]=GetCardValue(int(question[i]));

} for(i=0;i5;i++)

{

MakeAnswer(answer,type[i],question,oper); //获取可能的答案

switch(type[i])

{

case 0:

sum=MyCalcu(p[0],MyCalcu( p[1],MyCalcu(p[2], p[3], oper[2]),oper[1]),oper[0]); //A*(B*(c*D))

break;

case 1:

sum=MyCalcu(p[0],MyCalcu(MyCalcu(p[1], p[2], oper[1]),p[3],oper[2]),oper[0]); //A*((B*C)*D)

break;

case 2:

sum=MyCalcu(MyCalcu(p[0], p[1], oper[0]),MyCalcu(p[2], p[3], oper[2]),oper[1]); // (A*B)*(C*D)

break;

case 3:

sum=MyCalcu(MyCalcu(MyCalcu(p[0], p[1], oper[0]),p[2],oper[1]),p[3],oper[2]); //((A*B)*C)*D

break;

case 4:

sum=MyCalcu(MyCalcu(p[0],MyCalcu(p[1], p[2], oper[1]),oper[0]),p[3],oper[2]); //(A*(B*C))*D

break;

}

if(sum==24) return true;

}

return false;

}

/*

采用随机试探法:就是通过随机数字产生 加减乘除的 组合,通过大量的测试来命中的解法

提示:

1. 需要考虑用括号控制计算次序的问题 比如:( 10 - 4 ) * ( 3 + A ), 实际上计算次序的数目是有限的:

A*(B*(c*D))

A*((B*C)*D)

(A*B)*(C*D)

((A*B)*C)*D

(A*(B*C))*D

2. 需要考虑计算结果为分数的情况:( 3 + (3 / 7) ) * 7

3. 题目中牌的位置可以任意交换

*/

bool TryResolve(char* question, char* answer)

{

int oper[3]; // 存储运算符,0:加法 1:减法 2:乘法 3:除法

for(int i=0; i1000 * 1000; i++)

{

// 打乱纸牌顺序

shuffle(question);

// 随机产生运算符

for(int j=0; j3; j++)

oper[j] = rand() % 4; if( TestResolve(question, oper, answer) ) return true;

} return false;

}

int main(int argc, char* argv[])

{

// 初始化随机种子

srand( (unsigned)time( NULL ) ); char buf1[4]; // 题目

char buf2[30]; // 解答

printf("***************************\n");

printf("计算24\n");

printf("A J Q K 均按1计算,其它按牌点计算\n");

printf("目标是:通过四则运算组合出结果:24\n");

printf("***************************\n\n");

for(;;)

{

GivePuzzle(buf1); // 出题

printf("题目:");

for(int j=0; j4; j++){

if( buf1[j] == 'T' )

printf("10 ");

else

printf("%c ", buf1[j]);

} printf("\n按任意键参考答案...\n");

getch(); if( TryResolve(buf1, buf2) ) // 解题

printf("参考:%s\n", buf2);

else

printf("可能是无解...\n"); printf("按任意键出下一题目,x 键退出...\n");

if( getch() == 'x' ) break;

} return 0;

}

c语言小游戏代码

“贪吃蛇”C代码,在dev C++试验通过(用4个方向键控制)

#include stdio.h

#include stdlib.h

#include conio.h

#include time.h

#include Windows.h

#define W 78  //游戏框的宽,x轴

#define H 26  //游戏框的高,y轴

int dir=3;    //方向变量,初值3表示向“左”

int Flag=0;   //吃了食物的标志(1是0否)

int score=0;  //玩家得分

struct food{ int x;  //食物的x坐标

                 int y;  //食物的y坐标

                }fod;  //结构体fod有2个成员

struct snake{ int len;      //蛇身长

                   int speed;  //移动速度

                   int x[100];  //蛇身某节x坐标

                   int y[100];  //蛇身某节y坐标

                  }snk;   //结构体snk有4个成员

void gtxy( int x,int y)  //控制光标移动的函数

{ COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void gtxy( int x,int y);  //以下声明要用到的几个自编函数

void csh( );  //初始化界面

void keymove( ); //按键操作移动蛇

void putFod( );  //投放食物

int  Over( );   //游戏结束(1是0否)

void Color(int a);  //设定显示颜色的函数

int main( )   //主函数

{ csh( );

  while(1)

    { Sleep(snk.speed);

      keymove( );

      putFod( );

     if(Over( ))

      { system(“cls”);

       gtxy(W/2+1,H/2); printf(“游戏结束!T__T”);

       gtxy(W/2+1,H/2+2); printf(“玩家总分:%d分”,score);

       getch( );

       break;

      }

  }

  return 0;

}

void csh( )   //初始化界面

{ int i;

gtxy(0,0);

CONSOLE_CURSOR_INFO cursor_info={1,0};  //以下两行是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);

for(i=0;i=W;i=i+2)  //横坐标要为偶数,因为这个要打印的字符占2个位置

{Color(2);   //设定打印颜色为绿色

   gtxy(i,0);  printf("■");  //打印上边框

   gtxy(i,H); printf("■");  //打印下边框

}

for(i=1;iH;i++)

{ gtxy(0,i); printf("■");  //打印左边框

   gtxy(W,i); printf("■");  //打印右边框

}

while(1)

  { srand((unsigned)time(NULL));  //初始化随机数发生器srand( )

fod.x=rand()%(W-4)+2;  //随机函数rand( )产生一个从0到比”(W-4)”小1的数再加2

fod.y=rand()%(H-2)+1;  //随机函数rand( )产生一个从0到比”(H-2)”小1的数再加1

if (fod.x%2==0) break;  //fod.x是食物的横坐标,要是2的倍数(为偶数)

}

Color(12);   //设定打印颜色为淡红

gtxy(fod.x,fod.y); printf("●");  //到食物坐标处打印初试食物

snk.len=3;      //蛇身长初值为3节

snk.speed=350;  //刷新蛇的时间,即移动速度初值为350毫秒

snk.x[0]=W/2+1;  //蛇头横坐标要为偶数(因为W/2=39)

snk.y[0]=H/2;    //蛇头纵坐标

Color(9);   //设定打印颜色为淡蓝

gtxy(snk.x[0], snk.y[0]);  printf("■");   //打印蛇头

for(i=1;isnk.len;i++)

   { snk.x[i]=snk.x[i-1]+2;  snk.y[i]=snk.y[i-1];

     gtxy(snk.x[i],snk.y[i]);  printf("■");   //打印蛇身

   }

Color(7, 0);   //恢复默认的白字黑底

return;

}

void keymove( )  //按键操作移动蛇

{ int key;

if( kbhit( ) )    //如有按键输入才执行下面操作

{ key=getch( );

   if (key==224)  //值为224表示按下了方向键,下面要再次获取键值

     { key=getch( );

       if(key==72dir!=2)dir=1;  //72表示按下了向上方向键

       if(key==80dir!=1)dir=2;  //80为向下

       if(key==75dir!=4)dir=3;  //75为向左

       if(key==77dir!=3)dir=4;  //77为向右

     }

  if (key==32)

    { while(1) if((key=getch( ))==32) break; }  //32为空格键,这儿用来暂停

}

if (Flag==0)   //如没吃食物,才执行下面操作擦掉蛇尾

   { gtxy(snk.x[snk.len-1],snk.y[snk.len-1]);  printf("  "); }

int i;

for (i = snk.len - 1; i 0; i--)  //从蛇尾起每节存储前一节坐标值(蛇头除外)

{ snk.x[i]=snk.x[i-1];  snk.y[i]=snk.y[i-1]; }

switch (dir)  //判断蛇头该往哪个方向移动,并获取最新坐标值

{ case 1: snk.y[0]--; break;   //dir=1要向上移动

  case 2: snk.y[0]++; break;  //dir=2要向下移动

  case 3: snk.x[0]-=2; break;  //dir=3要向左移动

  case 4: snk.x[0]+=2; break;  //dir=4要向右移动

}

Color(9);

gtxy(snk.x[0], snk.y[0]); printf("■");   //打印蛇头

if (snk.x[0] == fod.x snk.y[0] == fod.y)   //如吃到食物则执行以下操作

   { printf("\7"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //7是响铃

else Flag = 0;   //没吃到食物Flag的值为0

if(snk.speed150) snk.speed= snk.speed+5;   //作弊码,不让速度无限加快

}

void putFod( )  //投放食物

{ if (Flag == 1)  //如吃到食物才执行以下操作,生成另一个食物

  { while (1)

  { int i,n= 1;

   srand((unsigned)time(NULL));  //初始化随机数发生器srand( )

   fod.x = rand( ) % (W - 4) + 2;  //产生在游戏框范围内的一个x坐标值

   fod.y = rand( ) % (H - 2) + 1;  //产生在游戏框范围内的一个y坐标值

   for (i = 0; i snk.len; i++)   //随机生成的食物不能在蛇的身体上

 { if (fod.x == snk.x[i] fod.y == snk.y[i]) { n= 0; break;} }

   if (n fod.x % 2 == 0) break;  //n不为0且横坐标为偶数,则食物坐标取值成功

  }

     Color(12);  //设定字符为红色

     gtxy(fod.x, fod.y);  printf("●");   //光标到取得的坐标处打印食物

  }

return;

}

int Over( )  //判断游戏是否结束的函数

{ int  i;

Color(7);

gtxy(2,H+1); printf(“暂停键:space.”);  //以下打印一些其它信息

gtxy(2,H+2); printf(“游戏得分:%d”,score);

if (snk.x[0] == 0 || snk.x[0] == W) return 1;  //蛇头触碰左右边界

if (snk.y[0] == 0 || snk.y[0] == H) return 1;  //蛇头触碰上下边界

for (i = 1; i snk.len; i++)

{ if (snk.x[0] == snk.x[i] snk.y[0] == snk.y[i]) return 1; }  //蛇头触碰自身

return 0;    //没碰到边界及自身时就返回0

}

void Color(int a)   //设定颜色的函数

{  SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a );  }  

C语言简易文字冒险游戏源代码

记忆游戏

#includestdio.h

#includetime.h

#includestdlib.h

#includewindows.h

#define N 10

int main(  )

{int i,k,n,a[N],b[N],f=0;

srand(time(NULL));

printf("  按1开始\n  按0退出:_");

scanf("%d",n);

system("cls");

while(n!=0)

{for(k=0;kN;k++)a[k] = rand( )%N;

printf("\n\t\t[请您牢记看到颜色的顺序]\n\n");

for(k=0;kN;k++)

{switch(a[k])

{case 0:system("color 90");printf("  0:淡蓝色\n");break;  //淡蓝色

case 1:system("color f0");printf("  1:白色\n");break;  //白色

case 2:system("color c0");printf("  2:淡红色\n");break;  //淡红色

case 3: system("color d0");printf("  3:淡紫色\n");break;  //淡紫色

case 4: system("color 80");printf("  4:灰色\n"); break;  //灰色

case 5: system("color e0");printf("  5:黄色\n");break;  //黄色

case 6: system("color 10");printf("  6:蓝色\n"); break;  //蓝色

case 7: system("color 20");printf("  7:绿色\n");break;  //绿色

case 8: system("color 30");printf("  8:浅绿色\n");break;  //浅绿色

case 9: system("color 40");printf("  9:红色\n");break;  //红色

}

Sleep(1500);

system("color f");  //单个控制 文字颜色

Sleep(100);

}

system("cls");

printf(" 0:淡蓝色,1:白色,2:淡红色,3:淡紫色,4:灰色,5:黄色,6:蓝色7:绿色,8:浅绿色,9:红色\n");

printf("\n\t请输入颜色的顺序:");

for(k=0;kN;k++)scanf("%d",b[k]);

for(k=0;kN;k++)if(a[k] == b[k]) f++;

if(f==0) printf("  你的记忆弱爆了0\n");

else if(f==1) printf("  你的记忆有点弱1\n");

else if(f5) printf("  你的记忆一般5\n");

else printf("  你的记忆力很强!\n");

Sleep(2000);

system("cls");

printf("\t\t按0退出\n\t\t按任意键继续游戏:\n");

scanf("%d",n);

system("cls");

}

return 0;

}

注:DEVc++运行通过,每输入一个数字要加入一个空格。

求一个简单的Java小游戏的代码

连连看的小源码

package Lianliankan;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class lianliankan implements ActionListener

{

JFrame mainFrame; //主面板

Container thisContainer;

JPanel centerPanel,southPanel,northPanel; //子面板

JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组

JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮

JLabel fractionLable=new JLabel("0"); //分数标签

JButton firstButton,secondButton; //分别记录两次被选中的按钮

int grid[][] = new int[8][7];//储存游戏按钮位置

static boolean pressInformation=false; //判断是否有按钮被选中

int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标

int i,j,k,n;//消除方法控制

public void init(){

mainFrame=new JFrame("JKJ连连看");

thisContainer = mainFrame.getContentPane();

thisContainer.setLayout(new BorderLayout());

centerPanel=new JPanel();

southPanel=new JPanel();

northPanel=new JPanel();

thisContainer.add(centerPanel,"Center");

thisContainer.add(southPanel,"South");

thisContainer.add(northPanel,"North");

centerPanel.setLayout(new GridLayout(6,5));

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));

diamondsButton[cols][rows].addActionListener(this);

centerPanel.add(diamondsButton[cols][rows]);

}

}

exitButton=new JButton("退出");

exitButton.addActionListener(this);

resetButton=new JButton("重列");

resetButton.addActionListener(this);

newlyButton=new JButton("再来一局");

newlyButton.addActionListener(this);

southPanel.add(exitButton);

southPanel.add(resetButton);

southPanel.add(newlyButton);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));

northPanel.add(fractionLable);

mainFrame.setBounds(280,100,500,450);

mainFrame.setVisible(true);

}

public void randomBuild() {

int randoms,cols,rows;

for(int twins=1;twins=15;twins++) {

randoms=(int)(Math.random()*25+1);

for(int alike=1;alike=2;alike++) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=randoms;

}

}

}

public void fraction(){

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));

}

public void reload() {

int save[] = new int[30];

int n=0,cols,rows;

int grid[][]= new int[8][7];

for(int i=0;i=6;i++) {

for(int j=0;j=5;j++) {

if(this.grid[i][j]!=0) {

save[n]=this.grid[i][j];

n++;

}

}

}

n=n-1;

this.grid=grid;

while(n=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=save[n];

n--;

}

mainFrame.setVisible(false);

pressInformation=false; //这里一定要将按钮点击信息归为初始

init();

for(int i = 0;i 6;i++){

for(int j = 0;j 5;j++ ){

if(grid[i+1][j+1]==0)

diamondsButton[i][j].setVisible(false);

}

}

}

public void estimateEven(int placeX,int placeY,JButton bz) {

if(pressInformation==false) {

x=placeX;

y=placeY;

secondMsg=grid[x][y];

secondButton=bz;

pressInformation=true;

}

else {

x0=x;

y0=y;

fristMsg=secondMsg;

firstButton=secondButton;

x=placeX;

y=placeY;

secondMsg=grid[x][y];

secondButton=bz;

if(fristMsg==secondMsg secondButton!=firstButton){

xiao();

}

}

}

public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释

if((x0==x (y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)(y0==y))){ //判断是否相邻

remove();

}

else{

for (j=0;j7;j++ ) {

if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空

if (yj) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边

for (i=y-1;i=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮

if (grid[x][i]!=0) {

k=0;

break;

}

else{ k=1; } //K=1说明通过了第一次验证

}

if (k==1) {

linePassOne();

}

}

if (yj){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边

for (i=y+1;i=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮

if (grid[x][i]!=0){

k=0;

break;

}

else { k=1; }

}

if (k==1){

linePassOne();

}

}

if (y==j ) {

linePassOne();

}

}

if (k==2) {

if (x0==x) {

remove();

}

if (x0x) {

for (n=x0;n=x-1;n++ ) {

if (grid[n][j]!=0) {

k=0;

break;

}

if(grid[n][j]==0 n==x-1) {

remove();

}

}

}

if (x0x) {

for (n=x0;n=x+1 ;n-- ) {

if (grid[n][j]!=0) {

k=0;

break;

}

if(grid[n][j]==0 n==x+1) {

remove();

}

}

}

}

}

for (i=0;i8;i++ ) { //列

if (grid[i][y0]==0) {

if (xi) {

for (j=x-1;j=i ;j-- ) {

if (grid[j][y]!=0) {

k=0;

break;

}

else { k=1; }

}

if (k==1) {

rowPassOne();

}

}

if (xi) {

for (j=x+1;j=i;j++ ) {

if (grid[j][y]!=0) {

k=0;

break;

}

else { k=1; }

}

if (k==1) {

rowPassOne();

}

}

if (x==i) {

rowPassOne();

}

}

if (k==2){

if (y0==y) {

remove();

}

if (y0y) {

for (n=y0;n=y-1 ;n++ ) {

if (grid[i][n]!=0) {

k=0;

break;

}

if(grid[i][n]==0 n==y-1) {

remove();

}

}

}

if (y0y) {

for (n=y0;n=y+1 ;n--) {

if (grid[i][n]!=0) {

k=0;

break;

}

if(grid[i][n]==0 n==y+1) {

remove();

}

}

}

}

}

}

}

public void linePassOne(){

if (y0j){ //第一按钮同行空按钮在左边

for (i=y0-1;i=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮

if (grid[x0][i]!=0) {

k=0;

break;

}

else { k=2; } //K=2说明通过了第二次验证

}

}

if (y0j){ //第一按钮同行空按钮在与第二按钮之间

for (i=y0+1;i=j ;i++){

if (grid[x0][i]!=0) {

k=0;

break;

}

else{ k=2; }

}

}

}

public void rowPassOne(){

if (x0i) {

for (j=x0-1;j=i ;j-- ) {

if (grid[j][y0]!=0) {

k=0;

break;

}

else { k=2; }

}

}

if (x0i) {

for (j=x0+1;j=i ;j++ ) {

if (grid[j][y0]!=0) {

k=0;

break;

}

else { k=2; }

}

}

}

public void remove(){

firstButton.setVisible(false);

secondButton.setVisible(false);

fraction();

pressInformation=false;

k=0;

grid[x0][y0]=0;

grid[x][y]=0;

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==newlyButton){

int grid[][] = new int[8][7];

this.grid = grid;

randomBuild();

mainFrame.setVisible(false);

pressInformation=false;

init();

}

if(e.getSource()==exitButton)

System.exit(0);

if(e.getSource()==resetButton)

reload();

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

if(e.getSource()==diamondsButton[cols][rows])

estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);

}

}

}

public static void main(String[] args) {

lianliankan llk = new lianliankan();

llk.randomBuild();

llk.init();

}

}

//old 998 lines

//new 318 lines

就C语言中 猜拳游戏的代码

这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。

下面的代码会实现一个猜拳游戏,让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。

启动程序后,让用户出拳,截图:

用户出拳,显示对决结果:截图:

代码实现:

#include stdio.h

#include stdlib.h

#include time.h

int main()

{

char gamer; // 玩家出拳

int computer; // 电脑出拳

int result; // 比赛结果

// 为了避免玩一次游戏就退出程序,可以将代码放在循环中

while (1){

printf("这是一个猜拳的小游戏,请输入你要出的拳头:\n");

printf("A:剪刀\nB:石头\nC:布\nD:不玩了\n");

scanf("%c%*c",gamer);

switch (gamer){

case 65: //A

case 97: //a

gamer=4;

break;

case 66: //B

case 98: //b

gamer=7;

break;

case 67: //C

case 99: //c

gamer=10;

break;

case 68: //D

case 100: //d

return 0;

default:

printf("你的选择为 %c 选择错误,退出...\n",gamer);

getchar();

system("cls"); // 清屏

return 0;

break;

}

srand((unsigned)time(NULL)); // 随机数种子

computer=rand()%3; // 产生随机数并取余,得到电脑出拳

result=(int)gamer+computer; // gamer 为 char 类型,数学运算时要强制转换类型

printf("电脑出了");

switch (computer)

{

case 0:printf("剪刀\n");break; //4 1

case 1:printf("石头\n");break; //7 2

case 2:printf("布\n");break; //10 3

}

printf("你出了");

switch (gamer)

{

case 4:printf("剪刀\n");break;

case 7:printf("石头\n");break;

case 10:printf("布\n");break;

}

if (result==6||result==7||result==11) printf("你赢了!");

else if (result==5||result==9||result==10) printf("电脑赢了!");

else printf("平手");

system("pausenulcls"); // 暂停并清屏

}

return 0;

}

代码分析

1) 首先,我们需要定义3个变量来储存玩家出的拳头(gamer)、电脑出的拳头(computer)和最后的结果(result),然后给出文字提示,让玩家出拳。

接下来接收玩家输入:

scanf("%c%*c",gamer);

求一个简单的JAVA游戏代码,100行左右,谢谢!

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Painter extends JFrame{

/**

*

*/

private static final long serialVersionUID = 8160427604782702376L;

CanvasPanel canvas = new CanvasPanel();;

public Painter() {

super("Star");

this.add(canvas);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.pack();

this.setResizable(false);

this.setLocationRelativeTo(null);

this.setVisible(true);

}

public static void main(String[] args) {

new Painter();

}

}

class CanvasPanel extends JPanel implements ActionListener{

/**

*

*/

private static final long serialVersionUID = -4642528854538741028L;

private JButton[] btn = new JButton[4];

private String[] btn_name = {"+", "-", "R", "L"};

private int center_x = 200, center_y = 200, radius = 100, degree = 0;

public CanvasPanel() {

this.setPreferredSize(new Dimension(400, 500));

this.setLayout(null);

for(int i = 0; i 4; i++) {

btn[i] = new JButton(btn_name[i]);

btn[i].setBounds(160 + i * 60, 425, 50, 50);

btn[i].addActionListener(this);

this.add(btn[i]);

}

}

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

for(int i = 0; i 5; i++) {

g.drawLine( (int) (center_x + radius * Math.sin(Math.toRadians(degree + 72 * i))),

(int) (center_y - radius * Math.cos(Math.toRadians(degree + 72 * i))),

(int) (center_x + radius * Math.sin(Math.toRadians(degree + 72 * i + 144))),

(int) (center_y - radius * Math.cos(Math.toRadians(degree + 72 * i + 144))));

}

}

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getActionCommand() == "+") {

if(radius 200)

radius += 2;

repaint();

} else if(e.getActionCommand() == "-") {

if(radius 0)

radius -= 2;

repaint();

} else if(e.getActionCommand() == "R") {

degree = (degree + 2) % 360;

repaint();

} else if(e.getActionCommand() == "L") {

degree = (degree - 2) % 360;

repaint();

}

}

}

求一个简单又有趣的JAVA小游戏代码

那你就自己做个猜数字好了

import java.util.*;

import java.io.*;

public class CaiShu{

public static void main(String[] args) throws IOException{

Random a=new Random();

int num=a.nextInt(100);

System.out.println("请输入一个100以内的整数:");

for (int i=0;i=9;i++){

BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));

String str=bf.readLine();

int shu=Integer.parseInt(str);

if (shunum)

System.out.println("输入的数大了,输小点的!");

else if (shunum)

System.out.println("输入的数小了,输大点的!");

else {

System.out.println("恭喜你,猜对了!");

if (i=2)

System.out.println("你真是个天才!");

else if (i=6)

System.out.println("还将就,你过关了!");

else if (i=8)

System.out.println("但是你还……真笨!");

else

System.out.println("你和猪没有两样了!");

break;}

}

}

}

发表评论

评论列表

  • 酒奴寰鸾(2022-05-30 17:52:32)回复取消回复

    dir!=1)dir=2;  //80为向下        if(key==75dir!=4)dir=3;  //75为向左        if(key==77dir!=3)dir=4;  //77为向右      }   i

  • 惑心野慌(2022-05-30 16:00:45)回复取消回复

     for (i = 0; i snk.len; i++)   //随机生成的食物不能在蛇的身体上  { if (fod.x == snk.x[i] fod.y == snk.y[i]) { n=

  • 只酷空枝(2022-05-30 09:51:17)回复取消回复

    thPanel.add(resetButton); southPanel.add(newlyButton); fractionLable.setText(String.valueOf

  • 南殷眼趣(2022-05-30 19:39:48)回复取消回复

    =0) { k=0; break; } else { k=2; } } } if (x0i) { for (j=x0+1;j=i ;j++ ) { if (grid[j][y0]!=0) { k=0; break; } else { k=2; } } } }