Xin ý tưởng làm một project

Tình hình là sắp tới em thi tin học trẻ, yêu cầu làm một chương trình liên quan đến học tập, hoặc giao thông, giáo dục, … hay có thể là game. Chỉ cần chương trình đơn giản thôi, không cần phức tạp đâu.

Mọi người có ý tưởng gì không, cho em xin chút ý tưởng ạ.
Update: Trước mắt em sẽ làm mấy cái này, còn ý tưởng nào mong mọi người đóng góp :slight_smile:
Thanks

Em sẽ làm một game trí nhớ. Lúc đầu sẽ cho người ta chọn mode, đến bây giờ thì em nghĩ sẽ có mode số, mode chữ và mode hình.

  • Mode số sẽ cho 1 dãy số, người ta sẽ nhớ và nhập lại dãy số đó.
  • Mode hình thì cũng như thế nhưng mà là 1 dãy các hình ảnh, sau thời gian ghi nhớ, đống hình ảnh sẽ xếp lộn xộn rồi bắt người chơi sắp xếp lại.
  • Mode multiple choice: cho 1 dãy số, sau đó cho 4 dãy số khác và yêu cầu chọn dãy số giống dãy của đề bài
1 Like

Cái ý tưởng thứ 2 khá giống với game Freaking Math đấy. Còn cái game number Guessing em tính cải tiến như thế nào, anh cũng vừa làm cái bài đó trên lớp.

1 Like

Ý tưởng mới toanh thì chắc là khó :blush:
Hay là Chương trình học luật giao thông (có thể là kiểu game để đấu với nhau về luật giao thông, hoặc là chương trình để kiểm tra về luật giao thông (có tính giáo dục nhá :wink: ),… ) hoặc có thể kiểm tra về cái khác ngoài luật giao thông :smile:

1 Like

Hồi đó cũng làm thử cái Guess number nhưng code ngu nên dài dòng quá.
Đoán số nằm trong đoạn từ 1 - 100 thì máy đoán kiểu nhị phân 7 lần là ra thôi.

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
using namespace std;
 
void Win(int choice)
{
	cout<<"==================================="<<endl;
	switch(choice)
	{
		case 1: cout<<"Computer win"<<endl;
				break;
		case 2: cout<<"User win"<<endl;
	}
	cout<<"==================================="<<endl;
	exit(0);
}
 
void Lose(int choice,int so)
{
	cout<<"==================================="<<endl;
	switch(choice)
	{
		case 1:	cout<<"Computer lose"<<endl;
				break;
		case 2: cout<<"User lose"<<endl;
				break;
	}
	cout<<"So duoc dua ra la: "<<so<<endl;
	cout<<"==================================="<<endl;
	exit(0);
}
 
void goiy(int doan,int so)
{
	cout<<endl;
	cout<<"Nguoi choi doan so: "<<doan<<endl;
	if(doan>so)
		cout<<"So nay lon hon so duoc dua ra"<<endl;
	else if(doan < so)
		cout<<"So nay be hon so duoc dua ra"<<endl;
}
 
void Computer(int &left,int &right, int &mid, int choice,int &doan,int so,int &solandoan,int n)
{
	Sleep(900);
	mid = (left + right) / 2;
	if(solandoan < n - 1)
		doan = mid;
	else
	{
		srand(time(NULL));
		int temp = right - left;
		doan = rand()%temp + left;
	}
	solandoan++;
	goiy(doan,so);
	if(doan > so)
		right = mid - 1;
	else
		left = mid + 1;
	if(doan == so)
		Win(choice);
}
 
void User(int choice,int &doan, int so, int &solandoan)
{
	cout<<"Moi ban nhap so: ";
	cin>>doan;
	solandoan++;
	goiy(doan,so);
	if(doan == so)
		Win(choice);
}
 
int main(void)
{
	int choice;
	int n,left = 0, right = 100, mid;
	int solandoan = 0;
	int so,doan;
	cout<<"==================================="<<endl;
	cout<<"TRO CHOI DOAN SO"<<endl;
	cout<<"==================================="<<endl;
	cout<<"\n[1] User - Computer"<<endl;
	cout<<"[2] Computer - User"<<endl;
	do
	{
		cout<<"Choose: ";
		cin>>choice;
	}while(choice != 1 && choice != 2);
	switch(choice)
	{
		case 1:
				{
					do
					{
						cout<<"Enter number (1 - 100): ";
						cin>>so;
						cin.ignore();
					}while(so < 1 || so > 100);
					do
					{
						cout<<"Nhap so lan doan duoc cho phep (5-8 lan): ";
						cin>>n;
					}while(n<5 || n>8);
					while(solandoan < n)
					{
						Computer(left,right,mid,choice,doan,so,solandoan,n);
					}
					Lose(choice,so);
				}
				break;
		case 2:
				{
					srand(time(NULL));
					so = rand()%100;
					n = rand()%7+3;
					cout<<"Ban duoc quyen doan "<<n<<" lan"<<endl;
					while(solandoan < n)
					{
						User(choice,doan,so,solandoan);
					}
					Lose(choice,so);
				}
				break;
	}
}

Để em xem về Freaking Math.

Em cũng không biết, hiện em đang nghĩ xem nên cải tiến thế nào

Dạ lấy của ý tưởng từ mấy cái cũ, rồi cải tiến lên thôi. Ghi thêm nguồn

1 Like

Mà dùng gì để làm chương trình? mình dùng C# winform làm cũng nhanh lắm :smiley:

1 Like

Về học tập thì mình nghĩ có thể làm cái game sắp xếp lại toán tử và toán hạng sao cho kết quả nó ra đúng với giá trị được đưa ra.
Cách làm (nếu làm trên console) thì có thể tự tạo ra một biểu thức trên giấy trước, lưu pattern trong file theo dạng:

<expression type string> <value>

Đưa value ra màn hình cùng với expression nhưng đảo thứ tự của nó.
User phải nhập lại expression sao cho đúng với string mẫu trong file để có kết quả đúng. (Nên làm những string mẫu sao cho chỉ có một cách sắp xếp thôi, khỏi bị bàn cãi. Chứ nếu nó có nhiều cách sắp khác nhau thì phải biết cách tính giá trị biểu thức bằng cây hay tiền tố hậu tố gì đó tốn thời gian làm)
Làm thêm cho nó cái hàm check expression kiểm tra biểu thức người dùng nhập vào đúng hay sai…

1 Like

Em cám ơn anh.
Còn về mấy cái em nêu trên anh có cải tiến gì không?
Rồi game dò mìn của anh, em thấy thể loại cũng hay (bắt phím qua lại, …), em tính cải tiến nó. Được không anh (tất nhiên là sẽ có nguồn)

tính làm bằng C++ hay C# ?

Chẳng biết cải tiến gì hơn với game Guess number :open_mouth:
http://www.abcya.com/guess_the_number.htm

Cứ làm thôi, cần gì nguồn, mấy cái đó người ta làm trước mình lâu rồi. Nếu ghi nguồn cũng chẳng biết ở đâu :astonished:

1 Like

Dạ bất kì ngôn ngữ nào, nhưng có điều là em chỉ biết mỗi C++, mà C# thì mới làm được winform :’( (có 1 yêu cầu về phần mỹ thuật là dễ nhìn, thẩm mĩ)

Hay là ai đó giúp em phần winform đi

Cái của em y chang vậy đấy (luôn cả phần retry với 3 mode).
Nhưng mà cái bảng greater lower đó hay đấy, làm sao để làm cái bảng như thế nhỉ? (trên console)

Winform mà thẩm mỹ thì khó lắm, mà thôi cứ làm cái khung trước. Cái game guess number anh làm có 1 button để nhấn ok,1 textbox hiện số, 1 label hiện nâng số lên hay hạ số xuống.

1 Like

C++ GUI thì Qt creator là dễ nhất rồi :dizzy_face:
Chơi game luyện trí nhớ nào bà con! cũng là Qt thôi :dizzy_face:

Hay thử thêm cái ý tưởng luyện trí nhớ khác.
Dạng như: How long string you can memory?
Bắt đầu từ độ dài string là 5. Cứ mỗi lần nhớ được string thì tăng độ dài thêm 1 và sinh random character cho string tiếp theo. String sau khi sinh ra tồn tại trên màn hình khoảng 3s. Nhưng không phải in 1 phát ra nguyên string. Mà in từng kí tự với khoảng 0.3s cho 1 kí tự. In xong dừng 2s chẳng hạn.

Chơi game này xong về gõ CAPCHA kiếm tiền luôn. :stuck_out_tongue_closed_eyes:

1 Like

Em thì chỉ có thế này

Phải chi em cày cái này từ trước, em chưa học.

Cám ơn anh, cái này hay nè, em sẽ thử.

Vậy cũng ổn rồi. Ngoài ra game luyện trí nhớ còn có game lật hình, 2 hình giống nhau thì biến mất.

Có cách nào cho nó hay hơn nữa không anh, ví dụ như text box hiện số làm thế nào ạ ?

Em chưa biết cách chèn hình anh ơi, cái đó chắc để sau.

Tất cả đều ghi hết nguồn là của trong daynhauhoc.com, có khi rum mình nổi luôn.

Anh làm bên winform đó em cần thì anh đưa project cho tham khảo.

Nếu làm theo winform thì em vào đây xem tutorial của microsoft nha : https://msdn.microsoft.com/en-us/library/dd553235.aspx

Anh không hiểu ý em là sao? Là chương trình của em có ghi tên 4rum mình để quảng cáo à :smiley:

1 Like

demo thử cái printing string phát

#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

void printing(const string& str)    {

    string temp = "";
    //combine gotoxy(x,y) function to put this string somewhere
        for(int index = 0; index < str.size(); index++) {

        temp += str[index];
        system("cls");
        cout << temp;
        Sleep(100);
        }
        Sleep(1000);
        system("cls");
}

int main()  {

    string test = "nguyen chiem minh vu.";
        printing(test);

    return 0;
}
2 Likes

Dạ cám ơn anh, nãy giờ em demo mà làm strlen() , nó báo lỗi :’(

Làm winform cái đó khó không anh, lấy chương trình của anh về để đi thi, ngại lắm.

Để em tìm ai đó làm hộ cái winform cũng được

Mà anh @nguyenchiemminhvu ơi, em làm số được không nhỉ, cho người ta nhớ chuỗi mà còn random phần tử thì có lẽ hơi quá

Cũng thêm 1 ý tưởng làm game như mấy cái game luyện gõ phím. Từng chữ cái rơi xuống, chạm nền là thua.

Mỗi chữ cái là 1 kiểu cấu trúc bao gồm các trường như:

struct element   {
    
    char ch;
    int x;  //Tọa độ
    int y; 
};

Khi tạo mới 1 element, chắc chắn nó sẽ nằm ở dòng đầu tiên. Tọa độ cột thì random cho nó.
Quản lý tất cả các element được sinh ra bằng 1 list hay vector gì đó.
Cứ mỗi giây chẳng hạn, giữ nguyên y và tăng x lên 1 cho nó rơi xuống. Xóa màn hình và in ra lại nó sẽ ra ở vị trí mới.
Check phím bấm người dùng, nếu bấm phím mà đúng với kí tự trong cái list hay vector gì đó thì gotoxy() tới tọa độ kí tự đó để thay bằng kí tự trắng. Delete element bị bấm trúng đi rồi cho nó ra khỏi vector hoặc list.
Cũng giống như mình spawn Enemy trong game này thôi: Game Space-Ship demo

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?