C++实现猜牌小游戏

这是大一的时用C写的猜牌小游戏,里面用了easyx图形库,供大家参考,具体内容如下

运行效果

代码

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<Windows.h>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
#define HANG 4
#define LIE 4
#define SIZE 200

int g_matt[HANG][LIE] = { 0 };
int g_matt_time[HANG][LIE] = { 0 };
int g_matt_mask[HANG*LIE] = { 0 };
IMAGE img[10];

void Put(){
 char jpg[50];
 for (int i = 0; i <10; i++){
  sprintf(jpg, "images\\%d.jpg", i);
 loadimage(&img[i], jpg, SIZE, SIZE);
 //printf("%s\n", jpg);
 }
}

int getNextNumber()
{
 char stat[8] = { 0 };
 for (int i = 0; i < HANG; i++){
 for (int j = 0; j < LIE; j++){
  if (g_matt[i][j]>0 && g_matt[i][j]<9)//让数组里面的数不能重复出现3次
  stat[g_matt[i][j]-1]++;//
  //printf("%c", stat);
 }
 }
 char n = 0;
 while (1) {
 n = rand() % 8 + 1;//随机1到8
 if (stat[n-1] >= 2) {//判断这个数组 里面不能出现2个以上重复的1到8
  continue;
 } else {
  break;
 }
 }

 return n;
}

void Playone(){
 for (int i = 0; i < HANG; i++){
 for (int j = 0; j < LIE; j++){
  g_matt[i][j] = getNextNumber();
  printf("%d ", g_matt[i][j]);
 }
 printf("\n");
 }
 for (int i = 0; i < HANG; i++){
 for (int j = 0; j < LIE; j++){
  if (g_matt[i][j] >= 1 && g_matt[i][j] <= 8)
  g_matt[i][j] += 20;
  printf("%d ", g_matt[i][j]);
 }
 printf("\n");
 }

 }

void Plus(){

 for (int i = 0; i < HANG; i++){
 for (int j = 0; j < LIE; j++){
  if (g_matt[i][j] == 1){
  putimage(i*SIZE, j*SIZE, &img[1]);
  }
  else if (g_matt[i][j] == 2){
  putimage(i*SIZE, j*SIZE, &img[2]);
  }
  else if (g_matt[i][j] == 3){
  putimage(i*SIZE, j*SIZE, &img[3]);
  }
  else if (g_matt[i][j] == 4){
  putimage(i*SIZE, j*SIZE, &img[4]);
  }
  else if (g_matt[i][j] == 5){
  putimage(i*SIZE, j*SIZE, &img[5]);
  }
  else if (g_matt[i][j] == 6){
  putimage(i*SIZE, j*SIZE, &img[6]);
  }
  else if (g_matt[i][j] == 7){
  putimage(i*SIZE, j*SIZE, &img[7]);
  }
  else if (g_matt[i][j] == 8){
  putimage(i*SIZE, j*SIZE, &img[8]);
  }
  else if (g_matt[i][j] >= 20 && g_matt[i][j] <= 28){
  putimage(i*SIZE, j*SIZE, &img[0]);
  }
  else if (g_matt[i][j] > 100){
  putimage(i*SIZE, j*SIZE, &img[9]);
  }
 }
 }
}

void Play(){
 MOUSEMSG msg = { 0 };
 msg = GetMouseMsg();
 //if (WM_LBUTTONDOWN == matt[msg.x][msg.y] >= 20 || matt[msg.x][msg.y]<=28){
 switch (msg.uMsg)
 {

 case WM_LBUTTONDOWN:
 {
  int row = msg.y / SIZE;
  int col = msg.x / SIZE;
  if (g_matt[col][row] >= 20 && g_matt[col][row] <= 28){

  g_matt[col][row] -= 20;
  //printf("%d ", g_matt[col][row]);
  }
  //mciSendString("open images\\click.wav", NULL, NULL, NULL);
  mciSendString("play images\\click.wav", NULL, NULL, NULL);
  Sleep(10);
  mciSendString("cloes images\\click.wav", NULL, NULL, NULL);
 }
 }

 //cleardevice();
}

void Over(){
 int *p = (int*)g_matt+1;
 for (int i = 0; i < HANG*LIE; i++) {
 for (int j = i + 1; j < HANG*LIE; j++) {

  if(p[i] <= 8 && p[i] >= 1 && p[i] == p[j]){
  p[i] += 120;
  p[j] += 120;
  //mciSendString("open images\\search.wav", NULL, NULL, NULL);
  mciSendString("play images\\search.wav", NULL, NULL, NULL);
  Sleep(10);
  mciSendString("cloes images\\search.wav", NULL, NULL, NULL);
  }
 }
 }
}

void Keep(){
 for (int i = 0; i < HANG; i++){
 for (int j = 0; j < LIE; j++){
  if (g_matt[i][j] >= 1 && g_matt[i][j] <= 8){
  g_matt[i][j] += 20;
  //printf("%d ", g_matt[i][j]);
  }
 }

 printf("\n");
 }
}

int main() {
 //int *p1;
 mciSendString("open images\\东京不太热.mp3", NULL, NULL, NULL);
 mciSendString("play images\\东京不太热.mp3", NULL, NULL, NULL);
 srand(time(NULL));
 HWND hwnd =initgraph(800, 800);
 Put();
 Playone();
 int frames = 0;
 DWORD t1, t2,t3;

 t1 = GetTickCount();//程序运行时间

 while (1)
 {
 t2 = GetTickCount();

 Plus();//贴图
 Play();//鼠标点击
 if (t2-t1>=1600){//等于当前时间减去程序运行时间大于等于两秒才运行 也就是卡两秒
  Keep();//加密

  //continue;
  t1 = t2;//当前时间赋给程序运行时间
 }
 Over();

 char ch[16] = { 0 };
 char n = 0;
 for (int i = 0; i < HANG; i++){
  for (int j = 0; j < LIE; j++){
  if (g_matt[i][j] >= 120){
   ch[g_matt[i][j] - 1]++;
  }
  }
 }
 while (n>6) {
  if (ch[n - 1] >= 6) {//判断这个数组 里面不能出现2个以上重复的1到8
  MessageBox(hwnd, "恭喜你赢了", "", MB_OK);
  //continue;
  n++;
  }
 }
 } 

 return 0;
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现洗牌发牌排序功能的示例代码

    在内存中模拟出一副牌,然后模拟洗牌,发牌等动作. 流程是这样的:构建一副牌保存到一个数组中-洗牌-创建玩家-向玩家发牌–输出每个玩家的牌. #include <stdio.h> #include <stdlib.h> #include <time.h> //定义扑克的花色 enum Suit{ heart, spade, diamond, club, joker1, joker2 }; //一副牌的数量 #define CARD_COUNT 54 //定义扑克 type

  • C++扑克牌的洗牌发牌游戏设计

    笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. 笔者在学习他人设计的基础上,完成了自己的程序设计.这里将源程序分享给大家. [1] 文件"card.h" #ifndef CARD_H #define CARD_H #include<string> using namespace std; class Card { publi

  • C++实现经典24点纸牌益智游戏

    本文为大家分享了经典24点纸牌益智游戏的具体实现方法,供大家参考,具体内容如下 一.实验内容 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(使用自定义注释模板) 2.列出表达式

  • C++实现猜牌小游戏

    这是大一的时用C写的猜牌小游戏,里面用了easyx图形库,供大家参考,具体内容如下 运行效果 代码 #include<stdio.h> #include<time.h> #include<stdlib.h> #include<Windows.h> #include<graphics.h> #include<mmsystem.h> #pragma comment(lib,"winmm.lib") #define HA

  • javascript实现的猜数小游戏完整实例代码

    本文实例讲述了javascript实现的猜数小游戏.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <

  • go语言实现猜数字小游戏的方法

    本文实例讲述了go语言实现猜数字小游戏的方法.分享给大家供大家参考.具体分析如下: 随机生成一个数字,输入一个数字看是否匹对,匹配则结速,反之提示是大了还是小了 复制代码 代码如下: package main import (     "bufio"     "fmt"     "math/rand"     "os"     "strconv"     "time" ) var (  

  • Java编写猜数字小游戏

    本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 以下是Java语言写的一个猜数字小游戏引用片段: import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; //主函数 public class calssOne { public static void main(String[] args) { //shit+Ctrl+o int result; //随机产生一个

  • python编写猜数字小游戏

    本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 import random secret = random.randint(1, 30) guess = 0 tries = 0 print("我叫丁丁,我有一个秘密数字!") print("数字从1到30,你只有6次机会!") while int(guess) != secret and tries < 6: print("你猜的数字是?") guess

  • java猜数字小游戏案例

    本文实例为大家分享了java猜数字小游戏案例,供大家参考,具体内容如下 package day08; import java.util.Scanner; public class GuessNumber { /** * 猜数字小游戏:. 需求: 随机产生一个整数数1-100(被猜数)不设置输出 * 键盘录入一个玩家要猜的数字 * 判断猜大还是猜小了或者猜中 */ public static void main(String[] args) { // 随机产生整数1-100 int number

  • java学习之猜数字小游戏

    今天主要学习了一些初级的设计,完成了这个猜数字的小游戏,其是也算不上是什么游戏,因为我答案都给出来了.当然也是想对代码更加熟练的操作,让自己能够得心应手. 这个小程序中让我花了点时间的主要是那个如何去重的问题,当时也是思考良久,后来才考虑到使用死循环让随机数产生直到不重复为止,其他感觉也还好. import java.util.Scanner; public class GuessingGames { public static void main(String[] args) { Scanne

  • Java实现猜字小游戏

    猜字游戏是一款益智游戏,喜欢玩具有挑战性单词游戏的你就可以来体验一下了,给你一个字母板.尝试通过想象相邻字母的单词.您将获得一个分数,根据您使用的字母,你已经使用了多少个字母,并以这些字母相关联的任何修饰符都可以的. 具体代码如下所示: package test07; import java.util.Scanner; //猜字符游戏 public class Guessing { //主方法 public static void main(String[] args) { Scanner sc

  • C语言实现的猜数字小游戏

    本文实例为大家分享了C语言实现猜数字小游戏的具体代码,供大家参考,具体内容如下 代码如下 #include <stdio.h> #include<stdlib.h> #include<time.h> //rand为产生随机数的函数 void game() { srand((unsigned)time(NULL)); int key = (int)rand() % 100; //产生一个1---100之间的数 int ret = 0; while (1) { printf

  • JS实现网页端猜数字小游戏

    本文实例为大家分享了JS实现网页端猜数字游戏的具体代码,供大家参考,具体内容如下 题目描述 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这个数字大,电脑会提示"太大",否则会提示"太小",当用户正好猜中,电脑会提示"恭喜你猜对了,这个数是-".在用户每次猜测之后,程序会输出用户第几次猜测.如果用户输入的根本不是一个数字,程序会告诉用户输入无效 代码实现 <!DOCTYPE html> <html&g

随机推荐