C语言示例,三个骰子
此代码为原创内容,仅供个人学习,禁止转发或用于商业通途。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>#define _bet_type 4
typedef unsigned char dice;
typedef unsigned int bet;void msleep(long);
void print_at(int,int,char*);
void draw_dice(int,int,int);
void roll_dices(dice*);
void draw_dices(dice*);
void roll(dice*);
void list_bets(dice*,bet*);
int check_bets(dice*,bet*);void msleep(long ms)
{struct timespec ts;ts.tv_sec = ms / 1000;ts.tv_nsec = (ms % 1000) * 1000000;nanosleep(&ts, &ts);
}
void print_at(int x,int y,char* s)
{printf("\e[?25l");printf("\033[%d;%dH%s\n",y,x,s);printf("\e[?25h");
}
void draw_dice(int x,int y,int point)
{switch(point){case 1:print_at(x,y," ");y++;print_at(x,y," ");y++;print_at(x,y," * ");y++;print_at(x,y," ");y++;print_at(x,y," ");break;case 2:print_at(x,y," ");y++;print_at(x,y," * ");y++;print_at(x,y," ");y++;print_at(x,y," * ");y++;print_at(x,y," ");break;case 3:print_at(x,y," ");y++;print_at(x,y," * ");y++;print_at(x,y," * ");y++;print_at(x,y," * ");y++;print_at(x,y," ");break;case 4:print_at(x,y," ");y++;print_at(x,y," * * ");y++;print_at(x,y," ");y++;print_at(x,y," * * ");y++;print_at(x,y," ");break;case 5:print_at(x,y," ");y++;print_at(x,y," * * ");y++;print_at(x,y," * ");y++;print_at(x,y," * * ");y++;print_at(x,y," ");break;case 6:print_at(x,y," ");y++;print_at(x,y," * * ");y++;print_at(x,y," * * ");y++;print_at(x,y," * * ");y++;print_at(x,y," ");break;}
}
void roll_dices(dice* dices)
{dices[0]=rand()%6+1;dices[1]=rand()%6+1;dices[2]=rand()%6+1;
}
void draw_dices(dice* dices)
{draw_dice(0,1,dices[0]);draw_dice(8,1,dices[1]);draw_dice(16,1,dices[2]);
}
void roll(dice* dices)
{for(int i=0;i<20;i++){roll_dices(dices);draw_dices(dices);msleep(50);}
}
void list_bets(dice* dices,bet *bets)
{char str[64];int point=dices[0]+dices[1]+dices[2];sprintf(str,"(s) small(4-10) rate:2 bet:%d",bets[0]);if(point>=4&&point<=10)printf("\033[0;93m");print_at(0,6,str);printf("\033[0m");sprintf(str,"(b) big(11-17) rate:2 bet:%d",bets[1]);if(point>=11&&point<=17)printf("\033[0;93m");print_at(0,7,str);printf("\033[0m");sprintf(str,"(T) triple 1 or 6 rate:60 bet:%d",bets[2]);if(dices[0]==dices[1]&&dices[1]==dices[2]&&(dices[0]==1||dices[0]==6))printf("\033[0;93m");print_at(0,8,str);printf("\033[0m");sprintf(str,"(t) other triple rate:30 bet:%d",bets[3]);if(dices[0]==dices[1]&&dices[1]==dices[2]&&dices[0]!=1&&dices[0]!=6)printf("\033[0;93m");print_at(0,9,str);printf("\033[0m");
}
int check_bets(dice *dices,bet* bets)
{int n=0;int point=dices[0]+dices[1]+dices[2];if(point>=4&&point<=10)n+=bets[0]*2;if(point>=11&&point<=17)n+=bets[1]*2;if(dices[0]==dices[1]&&dices[1]==dices[2]){if(dices[0]==1||dices[1]==6)n+=bets[2]*60;elsen+=bets[3]*30;}memset(bets,0,sizeof(int)*_bet_type);return n;
}
int main(int count,char** args)
{srand(time(NULL));int coin=10000;if(count>=2){coin=atoi(args[1]);if(coin<=0)coin=10000;}dice dices[3];bet bets[_bet_type];memset(bets,0,sizeof(int)*_bet_type);roll_dices(dices);char b;int n=10;do{system("clear");draw_dices(dices);list_bets(dices,bets);char str[30];sprintf(str,"coins = %d",coin);print_at(0,11,str);print_at(0,12,"input \"TYPE[,AMOUNT]\" to bet, \"e\" to roll, \"q\" to quit.");if(n<5||n>500){printf("\033[0;31m");print_at(0,13,"bets must be greater than 5 and less than 500!");printf("\033[0m");}scanf("%c,%d",&b,&n);if(b=='e'){roll(dices);coin+=check_bets(dices,bets); continue;}if(b=='q')break;if(n<5||n>500)continue;switch(b){case 's':coin+=bets[0];bets[0]=n;coin-=n;break;case 'b':coin+=bets[1];bets[1]=n;coin-=n;break;case 'T':coin+=bets[2];bets[2]=n;coin-=n;break;case 't':coin+=bets[3];bets[3]=n;coin-=n;break;}}while(1);printf("\nbye!\n");return 0;
}
C语言示例,三个骰子相关推荐
- 【计算理论】正则语言 ( 正则表达式原子定义 | 正则表达式递归定义 | 正则表达式语言原子定义 | 正则表达式语言结构归纳 | 正则表达式语言示例 | 根据正则表达式构造自动机 )
文章目录 一.正则表达式 定义 二. 正则表达式语言 原子定义 三.正则表达式语言 结构归纳定义 四.正则表达式语言 示例 五.空集 ∅\varnothing∅ 与 空字符 ε\varepsilonε ...
- [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...
- 【实验2 选择结构】7-9 sdut-C语言实验-三位数整数的各位数字
7-9 sdut-C语言实验-三位数整数的各位数字 分数 15 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 本题要求编写程序,输入一个三位数的正整数,并输出它的个位数字.十位数字和百位数 ...
- c语言的三种基本结构——初学者一定要了解哦
文章目录 前言 一.顺序结构 二.选择结构(分支语句) 1.选择语句之→if语句 1.1 if语句的基本结构 1.2 if语句之多分支: 1.3 if语句的常见错误使用. 2.选择语句之→switch ...
- C语言的三种基本结构
C语言的三种基本结构 顺序结构 顾名思义 顺序结构就是顺序写的c语言程序 没有判断也没有循环 所有的语句都是用线性的顺序执行 如下代码为基础的顺序结构 #include <stdio.h> ...
- 学习和在生产环节使用d语言的三个条件
2019独角兽企业重金招聘Python工程师标准>>> 其他主流语言不说,因为我们遇到的问题,差不多都有人遇到了,很容易找到解决方案. 而d语言呢,目前连招d语言程序猿的公司都没有哦 ...
- 大学c语言第三章作业,华中科技大学光电子学院C语言第三章
<华中科技大学光电子学院C语言第三章>由会员分享,可在线阅读,更多相关<华中科技大学光电子学院C语言第三章(20页珍藏版)>请在装配图网上搜索. 1.第三章 简单程序设计 1. ...
- java Socket Tcp示例三则(服务端处理数据、上传文件)
示例一: package cn.itcast.net.p5.tcptest; import java.io.BufferedReader; import java.io.IOException; im ...
- 嵌入式linux面试题解析(二)——C语言部分三
嵌入式linux面试题解析(二)--C语言部分三 1.下面的程序会出现什么结果 #include <stdio.h> #include <stdlib.h> #include ...
- scala语言示例_var关键字与Scala中的示例
scala语言示例 Scala var关键字 (Scala var keyword) The var Keyword in scala is used to declare variables. As ...
最新文章
- iOS开发--面试总结(二)
- python实验收获_python实验课代码心得
- 第十二章:Java_常用类
- 【CodeForces - 599C 】Day at the Beach(思维)
- MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)
- vb microsoft.xmlhttp 获取所有超链接_编写我的第一个VB程序
- 线性二次型最优控制器LQR设计原理以及matlab实现
- 测试方案和测试计划的区别
- 漫画 | 为什么 MySQL 数据库要用 B+ 树存储索引?
- NLP+语义分析(四)︱中文语义分析研究现状(CIPS2016、角色标注、篇章分析)
- 稳压二极管和TVS管知识点总结
- FaceBook 遭遇有史以来全球最大宕机
- 仿ios相机apk_iCamera仿苹果相机app下载-iCamera仿苹果相机下载app手机版 v4.0-第六手游网...
- 【NOIP2018】旅行 (洛谷P5049 / P5022) O(nlogn)题解
- 2021年中国电饭锅(电饭煲)行业现状及前景分析:个性化消费推动市场向高端、智能化发展[图]
- 网易云音乐常用API浅析
- C语言:质数和合数的判断
- JDBC 的代码逻辑封装
- 架构分布式____负载均衡4层和7层理解
- 阿里巴巴「防疫精灵」的敏捷开发实战