【嵌入式学习_C语言项目】石头剪刀布小游戏

前  言

        这是我在嵌入式学习
的第一阶段——C语言基础的学习过程中完成的一个项目,如果对您有帮助的话,可以点赞,收藏,关注哦,有其他问题可以私聊交流。

        项目还有需要改进优化的地方,也可以添加其他有趣的功能,期待各位大佬的指点和交流。

一、项目简介

项目名:石头剪刀布小游戏

功    能:与玩家进行石头剪刀布小游戏

介    绍:这个项目的主要目的是为用户提供一个用来进行石头剪刀布的程序,同时也作为一个C语言学习
阶段前期的实践项目。它主要是用来消遣的娱乐程序,同时可以提高编写代码的思维。

二、功能介绍

        玩家可以根据界面提示输入剪刀、石头、布相对应的数字来进行选择;

        电脑通过产生随机数来选择。

三、技术实现

1.界面设计

2.代码设计
2.1设计思路

①将“石头”,“剪刀”,“布”写进数组,方便后面打印功能的实现

②生成随机数并且%3,从而得到剪刀石头布的相对应数字

③判断胜负

④询问是否继续

2.2预处理头文件
#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
2.3搭建主函数框架
int main(void)
{
    
    return 0;
}
2.4定义变量
int playerChoice, computerChoice, result;  
char *choices[] = {"石头", "剪刀", "布"};  
char continuePlaying; 
2.5生成随机数
// 随机数生成 
srand(time(NULL));  
2.6展示界面并提示玩家输入
printf("欢迎来到石头、剪刀、布游戏!\n");  
printf("请输入你的选择(1=石头,2=剪刀,3=布):");  
scanf("%d", &playerChoice); 
2.7展示计算机和玩家选择
// 计算机随机出拳  
computerChoice = rand() % 3 + 1;  
printf("你的选择是:%s\n", choices[playerChoice - 1]);  
printf("计算机的选择是:%s\n", choices[computerChoice - 1]);  
2.8判断胜负
 // 判断胜负  
if (playerChoice == computerChoice)
{  
    result = 0; // 平局  
    printf("平局!\n");  
} 
else if ((playerChoice == 1 && computerChoice == 2) || (playerChoice == 2 && computerChoice == 3) || (playerChoice == 3 && computerChoice == 1)) 
{  
    result = 1; // 玩家赢  
    printf("你赢了!\n");  
} 
else 
{  
    result = -1; // 计算机赢  
    printf("计算机赢了!\n");  
}  
2.9询问是否继续
// 可以选择是否继续游戏  
 
    printf("是否想再来一局?(y\n):");  
    scanf(" %c", &continuePlaying);  
  
    if (continuePlaying == 'y' || continuePlaying == 'Y') 
	{  
		system("cls");
        goto STAR;
    } 
	else 
	{  
        printf("游戏结束,谢谢参与!\n");  
    }  

四、整体代码

#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
  
int main() 
{  
    int playerChoice, computerChoice, result;  
    char *choices[] = {"石头", "剪刀", "布"};  
    char continuePlaying; 
STAR:	
    // 随机数生成
    srand(time(NULL));  
  
    printf("欢迎来到石头、剪刀、布游戏!\n");  
    printf("请输入你的选择(1=石头,2=剪刀,3=布):");  
    scanf("%d", &playerChoice);  
  
    // 计算机随机出拳  
    computerChoice = rand() % 3 + 1;  
  
    printf("你的选择是:%s\n", choices[playerChoice - 1]);  
    printf("计算机的选择是:%s\n", choices[computerChoice - 1]);  
  
    // 判断胜负  
    if (playerChoice == computerChoice)
	{  
        result = 0; // 平局  
        printf("平局!\n");  
    } 
	else if ((playerChoice == 1 && computerChoice == 2) || (playerChoice == 2 && computerChoice == 3) || (playerChoice == 3 && computerChoice == 1)) 
	{  
        result = 1; // 玩家赢  
        printf("你赢了!\n");  
    } 
	else 
	{  
        result = -1; // 计算机赢  
        printf("计算机赢了!\n");  
    }  
  
    // 可以选择是否继续游戏  
 
    printf("是否想再来一局?(y\n):");  
    scanf(" %c", &continuePlaying);  
  
    if (continuePlaying == 'y' || continuePlaying == 'Y') 
	{  
		system("cls");
        goto STAR;
    } 
	else 
	{  
        printf("游戏结束,谢谢参与!\n");  
    }  
  
    return 0;  
}

五、总结

        这个石头剪刀布小游戏项目是在他人带领下完成的,只是作为一个练手的实践项目,这里面用到了C语言基础中的基本数据类型,printf函数的使用,scanf函数的使用,结构化编程,函数。这并不是一个已经完全完善了的代码,需要补足的地方还有很多,如可以将部分功能封装成函数,也可以通过代码写入其他功能,你也可以根据自己需要写入合适的功能。

         你们的支持和反馈对我来说非常重要。如果你有任何问题或建议,请通过私聊随时与我联系。别忘了点赞,收藏,关注哦!

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux下使用C语言实现小游戏可以使用一些库来简化开发。下面是一个简单的示例,使用了SDL库来实现一个简单的嵌入游戏: ```c #include <stdio.h> #include <stdbool.h> #include <SDL2/SDL.h> int main() { // 初始化SDL if (SDL_Init(SDL_INIT_VIDEO) != 0) { printf("SDL初始化失败: %s\n", SDL_GetError()); return 1; } // 创建窗口 SDL_Window* window = SDL_CreateWindow("嵌入游戏", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN); if (window == NULL) { printf("窗口创建失败: %s\n", SDL_GetError()); SDL_Quit(); return 1; } // 创建渲染器 SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); if (renderer == NULL) { printf("渲染器创建失败: %s\n", SDL_GetError()); SDL_DestroyWindow(window); SDL_Quit(); return 1; } // 游戏主循环 bool running = true; while (running) { SDL_Event event; while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { running = false; } } // 清空屏幕 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); SDL_RenderClear(renderer); // 在屏幕上渲染游戏内容 // 更新屏幕 SDL_RenderPresent(renderer); } // 清理资源 SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); return 0; } ``` 这是一个基本的游戏框架,你可以在游戏主循环中添加你的游戏逻辑和渲染代码。SDL库提供了许多功能,包括图形渲染、音频播放等,你可以根据自己的需求去使用。这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值