Chủ Nhật, 30 tháng 8, 2015

BÁO CÁO BÀI TẬP LỚN MÔN : ĐỒ HỌA MÁY TÍNH

Bài tập : Viết chương trình mô phỏng trò chơi rắn săn mồi



I. Thông tin thành viên trong nhóm :


  1. Nguyễn Thị Anh Vân - MSV : 1301024
  2. Đoàn Cường Anh - MSV : 1300327
  3. Nguyễn Thị Hiền - MSV : 1300831
  4. Nguyễn Thị Ngọc Hà - MSV : 1301062
  5. Nguyễn Thị Thùy Linh - MSV : 1300217

II. Tóm tắt lý thuyết, thuật toán liên quan :


  1. Tóm tắt lý thuyết :


 a) Hàm delay :

  •  Mục đích sử dụng : tạo độ trễ cho chương trình
  • Sử dụng thư viện : dos.h
  • Tham số bên trong hàm delay() là một con số (ngừng trong 1/1000 giây) ví dụ delay(1000) = 1s
  • Cách sử dụng
                + Cung cấp giá trị cho đối số n (có tham số trong lời gọi hàm)
                               delay(5000);      //Đối số n=5000
                + Sử dụng giá trị mặc định của đối số (Không có hàm số trong lời gọi)
                               delay(); //Đối số n=1000

   b) Hàm kbhit (keyboard hit)

  • Hàm nhận 1 kí tự trong vùng đệm bàn phím, thường dùng với do...while
  • Nếu một phím được nhấn thì nó trả về một giá trị số, nếu không thì trả về số 0.
                 Khi bạn có đoạn code như sau :
                          while ( kbhit() )
                                 {...}
                  Thì đoạn code trong {...} sẽ chạy khi bấm phím bất kì trên keyboard.

   c) Hàm srand (set random number seed)

      Dùng để khởi tạo một số ngẫu nhiên theo một số seed. Số ngẫu nhiên được tạo là pseudo-random, tức là số ngẫu nhiên giả, có thể đoán được số kế tiếp. Mỗi một số seed sẽ cho ra một bộ số random khác nhau.

  • Bổ trợ cho hàm random. Nếu không có nó, trong trường hợp hi hữu 2 lần random có thể trùng giá trị
  • srand(...) : hàm cung cấp bởi thư viện stdlib.h
  • time(NULL) : hàm cung cấp bởi thư viện time.h
  • Cú pháp : void srand(unsigned int seed)

   d) Chế độ console

        Console Application : Ứng dụng Console được viết với các Console Function, các Console Function hỗ trợ các loại kí tự dùng trong màn hình Console (màn hình DOS).
        Console giúp đơn giản hóa các thao tác trong chế độ Console. Console chứa các hàm thực hiện các chức năng sau :
     +   Đặt tiêu đề cho cửa sổ Console\
     +   Thay đổi kích thước (số dòng x số cột) của màn hình
     +   Thay đổi font chữ
     +   Di chuyển cửa sổ Console đến một vị trí bất kì (theo tọa độ màn hình - pixel)
     +   Xóa màn hình
     +   Đưa con trỏ đến một vị trí nào đó trên màn hình, lấy vị trí hiện tại của con trỏ
     +   Xuất một kí tự ra một vị trí nào đó trên màn hình
     +   Đặt màu cho chữ, màu nền
     +   Vẽ hình chữ nhật
     +   In ra một menu cho phép lựa chọn linh hoạt
     +   Nhập mật khẩu dạng *


  2. Thuật toán liên quan :

    Trò chơi gồm một đối tượng con rắn (Snake) di chuyển tự do trên màn hình (trái, phải, lên, xuống), ăn các đối tượng thức ăn (Food đặt ngẫu nhiên). Độ khó tương ứng với tốc độ di chuyển tăng từ 1 đến 5. 

Để di chuyển phần thân rắn theo phần đầu ta thực hiện như sau :





III. Chương trình mô phỏng :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
#include <conio.h>
#include <iostream.h>
#include <graphics.h>
#define loai 100 // che do dos (console la 100)
int TocDo[] = {5*loai, 4*loai, 2*loai, 1*loai, loai/2};
int dm = 18;
int max_row = 20, min_row = 5;
int max_col = 60, min_col = 2;
int i, x1, y1, xm, ym, d, muc, diem;
int x[50];
int y[10];
void start()
{
clrscr();
d = 3; // do dai ban dau cua con ran
if (diem == 0)
{
do{
gotoxy(10, 10);
cout<<"Moi ban chon muc choi tu 1 den 5: ";
cin>>muc;
}while(muc < 1 || muc > 5);
}
clrscr();
gotoxy(25,10);
cout<<"Muc choi cua ban la "<<muc<<"\n";
gotoxy(22,13);
cout<<"An Enter de bat dau choi !";
getchar();
x[0] = (min_col+max_col)/2;
y[0] = (min_row + max_row)/2;
x1 =-1; y1 =0;
xm = rand()%(max_col - min_col - 1) + min_col + 1;
ym = rand()%(max_row - min_row - 1) + min_row + 1;
clrscr();
i=1;
}
void thua()
{
char tiep;
gotoxy(20, 22);
cout<<"Rat tiec, ban da thua...\n";
gotoxy(20, 23);
cout<<"Diem cua ban la : "<<diem;
gotoxy(20, 24);
cout<<"Ban muon choi tiep khong? [y/n] ";
cin>>tiep;
if (tiep == 'y')
{
diem = 0;
start();
}else
{
exit(0);
}
}

void thang()
{
muc = muc % 5 + 1;
if (diem>=(dm-3)*5)
{
gotoxy(10,3);
cout<<"Chuc mung ban da pha dao!";
getchar();
}
gotoxy(63, 16);
cout<<"Diem :"<<diem;
gotoxy(20, 22);
cout<<"Chuc mung ban da thang\n";
gotoxy(20, 23);
cout<<"Diem cua ban la \n"<<diem;
gotoxy(20, 24);
cout<<"Nhan enter de choi muc tiep theo...";
getchar();
start();
}

void giaoDien()
{
gotoxy(63, 2); cout<<"RAN SAN MOI";
gotoxy(63, 8); cout<<"A: sang trai";
gotoxy(63, 9); cout<<"D: sang phai";
gotoxy(63, 10); cout<<"W: len tren";
gotoxy(63, 11); cout<<"S: xuong duoi";
gotoxy(63, 12); cout<<"Q: thoat";
gotoxy(63, 13); cout<<"P: tam dung";
gotoxy(63, 14); cout<<"Enter: tiep tuc";
gotoxy(63, 16); cout<<"Diem : "<<diem;
gotoxy(63, 17); cout<<"Muc choi : "<<muc;
for (i=min_col; i<max_col; i++)
{
gotoxy(i, min_row); cout<<"#";
gotoxy(i, max_row); cout<<"#";
}
for (i=min_row; i<=max_row; i++)
{
gotoxy(min_col, i); cout<<"#";
gotoxy(max_col, i); cout<<"#";
}
}

int main()
{
srand(time(NULL));
int ketThuc = 0;
int key = 0;
diem = 0;
clrscr();
gotoxy(30, 10); cout<<"RAN SAN MOI";
getchar();
start();
clrscr();
while(!ketThuc)
{
   do{
giaoDien();
gotoxy(xm, ym); cout<<"$";
gotoxy(x[0], y[0]); cout<<"*";
gotoxy(x[d-1], y[d-1]); cout<<" ";
for (int i = d; i >0; i--)
{
x[i] = x[i-1];
y[i] = y[i-1];
}
x[0] = x[0] + x1;
y[0] = y[0] + y1;
gotoxy(x[0], y[0]); cout<<" ";
gotoxy(xm, ym);
if (x[0] == xm && y[0] == ym)
{
diem++;
d++;
xm = rand()%(max_col-min_col - 1) + min_col + 1;
ym = rand()%(max_row-min_row - 1) + min_row + 1;
}
for(i=1; i<d; i++)
{
if (x[0] == min_col || y[0] == min_row || x[0] == max_col || y[0] == max_row || (x[0] == x[i] && y[0] == y[i])){
i = d;
thua();
}
}
if (d == dm)
{
thang();
}
delay(TocDo[muc]);
} while(!kbhit());
key = getch();
if (key == 'a' && x1 != 1)
{
x1 = -1; y1 = 0;
}
if (key == 's' && y1 != -1)
{
x1 = 0; y1 = 1;
}
if (key == 'd' && x1 != -1)
{
x1 =1; y1 = 0;
}
if (key == 'w' && y1 != 1)
{
x1 = 0; y1 = -1;
}
if (key == 'p')
{
getch();
}
if (key == 'q')
{
ketThuc = 1;
}
}
return 0;

}

IV. Kết quả :







    Thứ Hai, 25 tháng 5, 2015

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP

    Cách sửa lỗi không vào được mạng chấm than màu vàng win 7 8 XP wifi mạng day LAN bằng cách thiết lập IP tĩnh static

    Lỗi wifi hoặc biểu tượng kết nối internet hiển thị dấu chấm than màu vàng không kết nối mạng khá thường gặp khi sử dụng máy tính. Lỗi này thường gặp khi nhiều máy tính sử dụng chung 1 mạng LAN và không thể cấp phát IP cho máy tính của bạn gây tới việc không vào được mạng, có thể khắc phục bằng 1 mẹo nhỏ là set IP tĩnh như hướng dẫn ở dưới đây.

    Trước tiên click chuột phải vào biểu tượng wifi hoặc biểu tượng mạng như hình phía dưới đây chon Open Network and Sharing Center

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP


    1 cửa sổ hiện thị lên, tại menu trái và chọn Change adapter settings

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP

    Click chuột phải vào mạng mà bạn đang kết nối, ở dưới đây mình xài mạng dây thì click vào Local Area Connection. Còn nếu dùng wifi thì phải chọn Wireless Netword Connection và chọn Properties

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP

    Tiếp tục chọn Internet Protocol Version 4 TCP/IPv4 như phía dưới

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP


    Tại đây check vào phần Use the following IP address và điền vào các thông tin.

    IP address: Thường có dạng 192.168.1.X

    Trong đó X là giá trị từ 1 tới 255 các bạn có thể chọn bất kỳ giá trị nào, ví dụ bên dưới mình chọn 15, nếu mạng càng nhiều người sử dụng thì nên chọn những giá trị cao hơn

    Subnet mask: Máy tính sẽ tự điền
    Default getway: 192.168.1.1

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP


    Và nhấn OK và đợi xem mạng đã kết nối lại được chưa, nếu vẫn chưa được thì có thể thay đổi 1 vài giá trị X khác đi và thử lại. 

    Tuy nhiên giá trị 192.168.1 có thể khác nhau tùy vào loại mạng, có thể xem bằng cách nhấn:

    Windows + R --> Nhập vào cmd để mở Command Prompt --> Nhập vào lệnh ipconfig và xem Default Getway là gì

    Cách sửa lỗi không vào được mạng chấm than màu vàng wifi win 7 8 XP

    Nếu khác so với hướng dẫn trên thì phần Ip Address sẽ lấy theo thông tin này và thay giá trị X như hướng dẫn ở trên.

    Hưỡng dẫn thanh toán hóa đơn trực tuyến của Vietcombank

    Hưỡng dẫn các bạn từng bước thanh toán hóa đơn tiền điện, hóa đơn tiền điện thoại, hóa đơn máy bay... trực tuyến qua cổng Ibanking của Vietcombank.

    Hưỡng dẫn thanh toán hóa đơn trực tuyến của Vietcombank


    Mùa hè đã tới. Bạn ghét phải ra ngoài trời khi nhiệt độ nóng ở mức đáng báo động ? Bạn ghét phải ra ngoài mua thẻ điện thoại để thanh toán tiền ? Bạn cần một loại hình dịch vụ thanh toán ngay trên Internet mà không phải đi lại ?. Hôm nay TCN sẽ hưỡng dẫn các bạn thanh toán hóa đơn trực tuyến ngay trên hệ thống Internet Banking của Vietcombank.

    B1 : Đăng nhập tài khoản

    Đăng nhập theo đường dẫn : https://www.vietcombank.com.vn/IBanking/ 
    Nhập đúng thông tin tài khoản mà ngân hàng Vietcombank cung cấp.

    B2: Chọn Dịch vụ thanh toán hóa đơn

    Tại khung chính màn hình quản lý của IBanking Chọn > Thanh toán > Thanh toán hóa đơn.

    B3: Chọn hình thức thanh toán

    Ngân hàng Vietcombank có khá nhiều lựa chọn thanh toán hóa đơn qua Internet điển hình : 

    Hưỡng dẫn thanh toán hóa đơn trực tuyến của Vietcombank

    Hưỡng dẫn thanh toán hóa đơn trực tuyến của Vietcombank
    Chọn dịch vụ thanh toán.


    - Thanh toán hóa đơn tiền điện
    - Thanh toán vé tàu, máy bay
    - Thanh toán cước điện thoại cố định
    - Thanh toán cước Internet
    - Thanh toán Học phí
    - Thanh toán phí bảo hiểm
    - Thanh toán dịch vụ khách sạn/du lịch

    B4: Điền thông tin mã dịch vụ cần thanh toán.

    Bước này các bạn cần phải thật cẩn thận trong việc nhập thông tin/dịch vụ cần thanh toán. Loại hình dịch vụ bạn cần thanh toán (Mỗi loại hình dịch vụ được Vietcombank hỗ trợ đều có mã sản phẩm dịch vụ riêng) cần phải nhập chính xác.

    Hưỡng dẫn thanh toán hóa đơn trực tuyến của Vietcombank
    Nhập thông tin số điện thoại cần thanh toán

    B5: Xác nhận thanh toán 

    Bạn cần chú ý khi tiến hành tới bước cuối cùng ngân hàng sẽ xác nhận mã giao dịch của bạn qua cổng tin nhắn SMS OTP.

    Hưỡng dẫn thanh toán hóa đơn trực tuyến của Vietcombank
    Vietcombank thông báo thanh toán thành công

    facebook bị khóa tạm thời và cách khắc phục

    Hiện nay nhiều người dùng Facebook gặp tình trạng tài khoản bị khóa tạm thời (temporarily locked) và yêu cầu phải cập nhật mới mật khẩu để có thê tiếp tục sử dụng. Sau đây là một số trường hợp bị khóa tài khoản và cách giải quyết vấn đề. Theo thông tin được biết, một số trường hợp tài khoản bị khóa tạm thời là do bạn đã đăng nhập  vào bằng nhiều thiết bị khác nhau, vì vậy dẫn đến việc Facebook yêu cần bạn phải cập nhật lại mật khẩu mới, để tránh việc các tài khoản bị đăng nhập bất-hợp-pháp trên các thiết bị, khác không phải của người dùng.

    Khi bị khóa tài khoản của bạn xuất hiện thông báo như thế này:

    mở khóa face

    Cách giải quyết như sau:
    Update 12/8/2014
    1. Nhấn Tiếp tục để bắt đầu quy trình cập nhật lại mật khẩu
    2. Nhập lại mã captcha theo yêu cầu

    mo khoa face

    3. Cập nhật mật khẩu mới

    mo khoa face

    Lưu ý: Hãy chắc chằn rằng đây không phải là mật khẩu cũ của bạn và đã sử dụng để đăng nhập trên thiết bị khác.
    Sau khi xác nhận và hoàn thành các bước sau, bạn đã có thể sử dụng lại tài khoản cá nhân của mình.
    Có thể nói, từ việc bắt buộc xác thực lại tài khoản và yêu cầu phải sử dụng tên đã được đăng kí trên giấy tờ tùy thân, cho đến việc khóa tạm thời và yêu cầu cập nhật mật khẩu mới,…

    Trường hợp 2: Lý do là Fake IP tại nhiều địa điểm khác nhau nên nó tạm thời khóa để đảm bảo an toàn cho chủ ACC, xử lý như sau:
    Sửa file HOSTS trên PC của bạn trong thư mục: C:\Windows\System32\etc\. Open file Host bằng Notepad rồi sau đó thêm dòng sau ở phía cuối cùng
    173.252.110.27 facebook.com. Sau đó Save lại là được.

    Trường hợp 3: do face của bạn phát hiện những thao tác nghi ngờ như Spam, Flood . . . gây ra tình trạng tài khoản của bạn tạm thời bị khóa. Nếu sau 24 đến 48 tiếng tài khoản không được mở lại thì bạn vào đường dẫn sau để được hỗ trợ

    Trường hợp 4 Facebook sẽ đưa ra hai phương án xác nhận bạn có phải là chủ tài khoản hay không
    1. Trả lời câu hỏi bí mật
        Hoặc
    2. Xác nhận ít nhất 3 hình ảnh của Friend của bạn
    Nếu xác nhận đúng thì bạn sẽ tiếp tục được vào sử dụng
    Gần đây đã ghi nhận nhiều trường hợp khi các bạn vieert comment trên các page công cộng mà có sử dụng biều tượng cảm xúc thì ngay lập tức bị khóa tài khoản không cho thực hiện thap tác comment trong 2 tuần.
    Nguyên nhân của việc này là do facebook xem kiểu comment có dùng biểu tượng cảm xúc xuất hiện nhiều lần là hành động Spam.
    mo khoa face
    Mình đã thử và xác nhận đúng là như vậy, nếu bạn Spam nhiều biểu tượng khác nhau trong 1 comment thì không sao, còn gặp phải comment một biểu tượng nhiều lần thì có vấn đề xảy ra đấy. Bạn hãy cẩn thận nhé…
    3. Trường hợp bạn không xác nhận được Email hay hình Tag của bạn bè
    Trường hợp này có rất nhiều bạn gặp phải khi không vào được Facebook, cách cuối cùng đó là sử dụng số điện thoại của bạn để xác minh lại tài khoản. Bạn có thể lựa chọn gửi tin nhắn hoặc có thẻ gọi đến facebook cung cấp cho mình số xác nhận.

    mo khoa face

    + Nếu như bạn biết một chút về tiếng Anh thì bạn có thể sử dụng cuộc gọi đén từ dịch vụ support của Facebook.
    + Sử dụng tin nhắn từ Facebook bạn sẽ mất một thời gian mới nhận được mã số hoặc có thể là không nhận được

    Hướng dẫn như sau:
    Hãy làm như hướng dẫn để giúp tài khoản của bạn trở lại binh thường

    mo khoa face

    Để mở khóa bạn nhấn tiếp tục

    mo khoa face

    Tiếp theo Facebook sẽ yêu cầu bạn xác thực tài khoản của bạn thông qua mobile. Bạn chọn mục “ Enter a phone number” sau đó nhập số điện thoại của bạn vào. Chú ý nhiều bạn có nhập số điện thoại vào nhưng không xác thực được và làm nhiều lần như vậy facebook sẽ báo lỗi. Hãy thử lại lần sau, kinh nghiệm là để cách 2 ngày sau đó hãy thử lại.

    mo khoa face

    Bước cuối cùng là nhập số điện thoại của bạn vào nữa là ok. Chú ý hiện tại mình thấy SIM để xác nhận tốt nhất là Viettel, mobifone, beeline. Đối với sim mobifone thì đầu số để nhận nhanh nhất từ facebook là 0128. Có nhiều đầu số khác nữa mà bạn có thể thử.

    mo khoa face

    Sau khi nhập số điện thoại của bạn vào FB sẽ gửi cho bạn một CODE về, việc đơn giản là bạn chỉ cần nhập chính xác đoạn code đó vào  và đăng nhập. Facebook xác thực thành công sẽ cho phép bạn LOGIN vào tài khoản luôn.
    Vì facebook chỉ cho phép 1 số điện thoại kích hoạt cho 1 tài khoản vậy nên nếu như bạn sử dụng nhiều tài khoản facebook thì nên chú ý tới vấn đề này.


    Trường hợp 5. Trường hợp gửi mail nhưng không nhận được mã số kích hoạt


    mở khóa facebook

    Theo như hình vẽ, mình thấy rằng lỗi chủ yếu xảy ra với mạng Viettel, và với những bạn sử dụng hình thức gửi SMS tới điện thoại chứ không dùng cuộc gọi.
    Lưu ý: Một số bạn cho rằng cách này là lừa đảo lấy tiền các thành viên Facebook. Mong các bạn xem xét kỹ trước khi thực hiện.
    Nguyên nhân: Bạn không nhận được text khi verity, lý do có thể là do: Đầu số điện thoại của bạn đã xác thực một tài khoản rồi, hoặc nằm trong một trường hợp là số Viettel, Mobile 090.
    Cách khắc phục như sau:
    + Các bạn nào dùng Viettel mà không nhận được mã xác minh tài khoản thì dùng Ultrasuf, lúc đăng nhập lại nó sẽ hiện thêm gửi mã bằng cuộc gọi đến, bạn kích vào đó sẽ có cuộc gọi đến và bạn nghe họ đọc mã, điền chính xác vào là ok. Đã thử và thành công nên bạn yên tâm.
    + Hiện nay việc xác thực nick Facebook qua việc gửi “mã xác nhận” về số điện thoại của mạng Viettel không được, nhiều bạn nhập số điện thoại của mạng Viettel vào(nhớ bỏ số 0 khi nhập) nhưng không nhận được tin nhắn của Facebook trả về. Lý do là Viettel đã chặn.
    + Để nhận được mã xác nhận từ SĐT mạng Viettel bạn phải thực hiện như sau:
    Đầu tiên bạn dùng số điện thoại muốn nhận mã xác nhận soạn tin nhắn theo cú pháp: F1 gửi đến 9223 (phí tin nhắn là 1000 VND) Tổng đài sẽ gửi về nội dung: Mã xác nhận Facebook Mobile: XXXXXX… Bạn không cần mã số này nếu Face của bạn đang bị khóa (không vào được trang cá nhân của bạn). Mã số này chỉ được dùng khi Face bạn đang bình thường nhưng SĐT của bạn nhập vào thông tin cá nhân trên Face chưa xác thực. Bạn cần làm như sau để xác thực: Bạn vào Thiết lập tài khoản => Di động => và nhập mã kích hoạt vào ô “Mã kích hoạt”.
    Sau đó bạn tiến hành nhập số điện thoại vừa nhắn tin vào ô nhập SĐT của Facebook, sau đó bạn nhận được mã xác nhận. Bạn nhập mã xác nhận này vào cửa sổ mới mở là được.
    Sau khi làm xong bạn hủy dịch vụ 9223 bằng cú pháp: HUY gửi 9223(phí 100đ). Như vậy chỉ mất 1.100đ là bạn đã có thể xác thực được tài khoản. Muốn biết 9223 có phải là dịch vụ của Viettel hay không thì bạn có thể gọi điện tới số 19008198 để kiểm tra!
    Nếu bạn có số điện thoại Mobifone, Gmobile, Vietnammobile thì bạn không cần làm như trên, vẫn nhận được mã xác nhận (yêu cầu số dư tài khoản >1000 VND).
    Lưu ý: Bạn cần thay số 0 ở đầu số điện thoại của mình bằng +84, là mã vùng quốc gia.
    Chúc bạn thành công !