Nguyên tắc là như sau:
- Máy tính sẽ chọn ngẫu nhiên một số từ 1 đến 100.
- Máy tính sẽ yêu cầu bạn đoán số đó là bao nhiêu.
- Máy tính sẽ so sánh số bạn chọn và số « bí mật » đó. Máy tính sẽ gợi ý cho bạn biết số bí mật này lớn hay nhỏ hơn số mà bạn đã chọn. Nếu đoán đúng thì chương trình dừng lại.
- Nếu bạn đoán sai ở bước 3, thì máy tính lại kêu bạn đoán tiếp.
- … Và máy tính lại gợi ý số bí mật lớn hơn hay nhỏ hơn.
- Và nó vẫn tiếp tục cho đến khi bạn tìm thấy số bí mật đó.
Mục đích của trò chơi đương nhiên là tìm số bí ẩn với số lần đoán nhỏ nhấtTạo ra nhiều cấp độ khó khác nhau cho người chơi lựa chọn. Bắt đầu, tạo một Menu yêu
cầu người chơi lựa chọn. Ví dụ:
- 1 = từ 1 đến 100.
- 2 = từ 1 đến 1000.
- 3 = từ 1 đến 10000.
E làm phần dưới bằng switch case, nhưng khi chạy chương trình bị trục trặc khi mà mỗi lần e đoán sai số ngẫu nhiên thì nó tự động đổi sang số ngẫu nhiên khác. E biết tại e ăn gian cho printf số ngẫu nhiên ra màn hình :v e làm cách 1 function int main duy nhất. mong có thánh nào chỉ giúp
chán, newbie chỉ cho post 1 pic.
Hình này là khi e bỏ phần tạo số ngẫu nhiên ra ngoài vòng lặp.(vẫn bị lặp tạo số và thậm chí giá trị lệch ra khỏi khoảng ( 1-100; 1-1000; 1-10000 ))
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
int secNum, choNum, count=0, lv, max, min;
srand(time(NULL));
secNum=(rand()%(max-min+1))+min;
printf("Choose the level\nLv1.1 Player:1-100\nLv2.2 Players:1-1000\nLv3.3 Players:1-10000\n");
scanf("%d", &lv);
do
{
switch(lv)
{
case 1: max=100; min=1;
printf("%d\n", secNum);
printf("Guess the Secret Number: ");
scanf("%d", &choNum);
count++;
if(choNum<secNum) printf("Too small!\n");
if(choNum>secNum) printf("Too big!\n");
break;
case 2: max=1000; min=1;
printf("%d\n", secNum);
printf("Guess the Secret Number: ");
scanf("%d", &choNum);
count++;
if(choNum<secNum) printf("Too small!\n");
if(choNum>secNum) printf("Too big!\n");
break;
case 3: max=10000; min=1;
printf("%d\n", secNum);
printf("Guess the Secret Number: ");
scanf("%d", &choNum);
count++;
if(choNum<secNum) printf("Too small!\n");
if(choNum>secNum) printf("Too big!\n");
break;
} } while(choNum!=secNum);
printf("You won with guessing in %d time(s)!", count);
getchar();
return 0;
}