1. 程式人生 > >初學c 實戰1:Simon小遊戲 (來源於《c語言入門經典》)

初學c 實戰1:Simon小遊戲 (來源於《c語言入門經典》)

  1. 問題描述:

這是一個記憶測試遊戲。螢幕上顯示很短時間的數字。玩家必須在數字消失之前記住他們,然後輸入這串數字。每次過後,計算機顯示更長一串數字,讓玩家繼續玩下去。

2.問題分析:

程式產生 0~9 的整數,螢幕上顯示1秒鐘,之後刪除它們。然後提示玩家輸入之前的整數。若輸入成功,遊戲繼續。並且數字會隨遊戲變長,直到輸入錯誤,遊戲結束。

程式邏輯流程圖:

  

原始碼:

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	char another_game = 'Y';
	
	bool correct = false; 
	
	int counter = 0;
	
	int sequence_length = 0;
	time_t seed = 0;
	int number = 0;
	
	time_t now = 0;
	int time_taken = 0;
	
	printf("\nTo play Simple Simon, "
		"watch the screen for a sequence of dights.");
	printf("\nWatch carefully, as the dights are only displayed"
		" for a second! ");	
	printf("\nThe computer will remove them, and then promt you ");
	printf("to enter the same sequence.");
	printf("\nWhen you do, you must put spaces between the digits. \n");
	printf("\nGood Luck!\nPress Enter to play\n");
	scanf("%c", &another_game);	
	int i = 0;
	
	do
	{
		correct = true;
		counter = 0;
		sequence_length = 2;
		time_taken = clock();
		
		while(correct)
		{
			sequence_length += (counter++) % 3 == 0;
			
			seed = time(NULL);
			
			now = clock();
			
			srand((unsigned int)seed);
			for( i = 1; i <= sequence_length; i++)
				printf("%d ", rand() % 10);
				
			for(; clock() - now < CLOCKS_PER_SEC; )
                  ;
            printf("\r");
            for(i = 1; i <= sequence_length; i++)
                printf("  ");
             
            if(counter == 1)
                printf("\nNow you enter the sequence - don't forget"
                      " the spaces\n");
            else
                printf("\r");                      	
			srand((unsigned int)seed);
			for( i = 1; i <= sequence_length; i++)
			{
				scanf("%d", &number);
				if(number != rand() % 10)
				{
					correct = false;
					break;
				}
			}
			printf("%s\n", correct ? "Correct!" : "Wrong!");	
				
		}
		time_taken = (clock() - time_taken);
		
		printf("\n\n Your Score is %d", (--counter * 100) / time_taken);
		fflush(stdin);
		/**/
		
		/**/
		
		printf("\nDo you want to play again(y/n)?");
		scanf("%c", &another_game);
	}while(toupper(another_game) == 'Y');
	return 0;
}

相關推薦

初學c 實戰1Simon遊戲 來源於c語言入門經典

  1. 問題描述:這是一個記憶測試遊戲。螢幕上顯示很短時間的數字。玩家必須在數字消失之前記住他們,然後輸入這串數字。每次過後,計算機顯示更長一串數字,讓玩家繼續玩下去。2.問題分析:程式產生 0~9 的整數,螢幕上顯示1秒鐘,之後刪除它們。然後提示玩家輸入之前的整數。若

java專案實戰——Java打飛機遊戲附完整原始碼

點選有驚喜 寫在前面 技術源於分享,所以今天抽空把自己之前用java做過的小遊戲整理貼出來給大家參考學習。java確實不適合寫桌面應用,這裡只是通過這個遊戲讓大家理解oop面向物件程式設計的過程,純屬娛樂。程式碼寫的很簡單,也很容易理解,並且註釋寫的很清楚了,還有

pythonpygame遊戲—— 打字遊戲

   程式碼一:實現字元下落的基本功能 """ 打字遊戲 1. 宣告列表word、xx(x座標值)、yy(y座標值) 2. 建立init()函式,初始化三個列表 3. 第四部分:paint ===>繪製字元 4. 第三部分:action ===>進行字母移動 5.

LOJ #10084. 「一本通 3.3 練習 1」最二分+SPFA判負環

ont 題意 二分 size 描述 負環 -s bsp lan 題意描述:    見原LOJ:https://loj.ac/problem/10084 題解:   LOJ #10084. 「一本通 3.3 練習 1」最小圈(二分+SPFA判負環)

c語言課程結束專案2048遊戲

《C語言程式設計基礎》學習完畢,完成第一個專案:2048小遊戲。 //思考:程式設計時,要先想整個框架還是先想每個函式的演算法。 //思考:每一個函式要不要傳引數(即陣列) //思考:每一個函式之間的聯絡是什麼,誰呼叫誰…這裡很容易搞得頭暈,越想越覺得複雜,便不想完成專案了。 &nb

【休閒遊戲 實戰1】推箱子PC端遊戲附原始碼

效果圖:第100關有些難度,用了449步才過關(我用的是可跳關版的,直接玩的最後一關)原始碼解讀原始碼一共3個檔案:index.html(遊戲介面載入,核心功能),js/mapdata100.js(100個16階矩陣,通過0,1,2,3,4分別對應遊戲中5個元素的圖片來定義每

C# 基礎知識系列- 17 實戰篇 編寫一個工具1

# 0. 前言 這是對C# 基礎系列的一個總結,現在我們利用之前學到的知識做一個小小的工具來給我們使用。 如果有看過IO篇的小夥伴,應該有印象。當時我提過一個場景描述,我們在平時使用系統的時候,經常會為了找某個檔案的位置而煩惱。那麼我們現在嘗試寫一個控制檯程式來幫助我們找檔案的具體位置。 # 1. 分析

謀哥社交遊戲App將是下一個金礦!

最重要的 感覺 接口 產品 one 這樣的 現在 廣告 port 【謀哥每天一原創幹貨,第四十五篇】 移動互聯網的機會是許多的。誰先做誰的機會就更大,所以把握時機很重要。現在的App市場,各個分類的App已經多得眼花。也就是所謂的紅海一片。 那麽。在移動浪潮下。是不是還

初遇C#一個簡單的程序圓形周長,面積計算器

編碼 雙精度 崩潰 輸入 面向對象 窗口 語句 readline 面向對象的語言 作為一個面向對象的語言,與用戶的交互很關鍵! 在此,我們可以先分析一下我們這個小程序要與用戶交互的內容:1.命名很重要,讓用戶看見這個程序就知道這個程序的作用。 2.當用戶打開這個程序時,提示

HP C7000刀片服務器實戰1刀片地址配置

-o 電腦 fff 服務器 pro roc 初始化 water p地址 1.到機房看到刀片服務器,打開機櫃前面的LED顯示屏,設置OA管理板初始化IP地址 2.設置完IP地址後,通過網線連接OA管理板和電腦,配置電腦和管理板在同一個網段,實現電腦可以訪問管理板的地址。通過網

C++、Qt實現的遊戲2048

圖片 explicit AC 向上 類的構造函數 += cli 而後 遊戲 窗口布局與遊戲截圖: 實現思路: 1.使用二維數組模擬整個遊戲網格,並將二維數組中每個數的大小用作遊戲中每個網格中的數據。 2.將對遊戲的數據及數據的操作(即玩家的操

CNN實戰1實現模仿大師繪畫

bsp 向量 還在 mnist 變化 使用 ext 濾鏡 完成 0. 風一更 有幾天沒有更新了,因為不知道小白喵的學習情況。小黑喵學習深度學習主要還是更偏NLP一點。在文本數據使用word2vec處理為向量矩陣這部分是視覺方向接觸不到的,之前想更這部分內容,不過既然

基於Django快速開發可定制的辦公系統實戰(1)Git的使用

cal http 本地 repos har 開開 www 一個 hub 基於Django快速開發可定制的辦公系統實戰(1):Git的使用 ?為什麽在項目的開篇要介紹下git的使用呢?俗話說:“工欲善其事,必先利其器”,git工具就是項目開發的必備利器,尤其是在多人協作開發環

資料庫SQL實戰1查詢最晚入職員工的所有資訊

思想: 題目要求查詢最晚入職員工的所有資訊,通過一個子查詢(select max(hire_date) from employees)查找出入職最晚員工的入職的時間hire_date,然後通過where hire_date = (select max(hire_date) from e

Cocos Creator開發微信遊戲遊戲實戰

目錄 小遊戲介紹  小遊戲cocos creator場景圖結構 程式碼檔案 小遊戲完整工程 小遊戲介紹 一個左右跳一跳小遊戲,點螢幕左邊向左跳,點右邊向右跳,落水為失敗。 PC chrome瀏覽器下游戲截圖: chrome瀏覽器執

Cocos Creator開發微信遊戲實戰練習篇

目錄 cocos creator練習專案介紹 我的開發環境: 使用cocos creator製作過程 一:新建cocos creator工程 二:製作解析度選擇 三: 指令碼語言選擇 四:程式碼如何組織 五:遊戲邏輯實現 六:cocos creato

三子棋遊戲C語言實現

C語言打造簡單的三子棋小遊戲 簡單三子棋是指棋盤為3*3,玩家與電腦之間對決的遊戲。 話不多說,先上圖:其中‘0’代表電腦落子,‘X’:玩家落子 基本思路: 1.列印地圖(列印一個“#”字狀的棋盤) 2.電腦落子(隨機落子) 3.玩家落子(通過輸入座標的方式) 4判斷遊戲結果 程式碼及註釋

併發程式設計實戰(1)執行緒安全性之有狀態和無狀態物件

程序和執行緒的區別 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位. 執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位. 程序在執行過程中擁有獨立的記憶體單元,程序

LayaAir(1.7.19)遊戲聲音對象復用

方法 type mini ima pro 對象 微信 log 技術分享 本人想要復用 Laya.SoundChannel 對象 , 奈何在WX中會報錯: 原因 : 解決方案有2種方法: ①在微信中的code.js中解決 , 不提倡 (因為一旦壓縮了code.js很難找到位

資料結構實現 3.1二分搜尋樹C++版

資料結構實現 3.1:二分搜尋樹(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 查詢操作 2.4 遍歷操作 2.5 其他操作 3. 演算法複雜度分