đồ án môn học lập trình căn bản điện tử thiết kế hiệu ứng quảng cáo bằng Devc. Bao gồm chương trình lớn và 16 hiệu ứng quảng cáo chạy bằng Devc. Ngôn ngữ lập trình C. C là một ngôn ngữ lập trình được ưa chuộng và sử dụng rộng rãi, đặc biệt trong các lĩnh vực về khoa học kỹ thuật. Đây là ngôn ngữ phù hợp với người không có nhiều kinh nghiệm về lập trình. Ngoài điện tử, ngôn ngữ C còn được sử dụng trong các lĩnh vực như cơ khí, cơ học chất lỏng, truyền nhiệt, vật lý, hóa học,…
Trang 1TRƯỜNG BÁCH KHOA
KHOA KỸ THUẬT ĐIỆN TỬ
- -
BÁO CÁO ĐỒ ÁN LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
THIẾT KẾ HIỆU ỨNG QUẢNG CÁO
CÁN BỘ HƯỚNG DẪN NHÓM SV THỰC HIỆN: N07
Cần Thơ, Ngày Tháng Năm
MỤC LỤC
I Giới thiệu đề tài 1.Mục tiêu thiết kế 2.Yêu cầu thiết kế
Trang 23.Giới hạn thiết kế
4.Hướng giải quyết
II.Nội dung
1 Giải thuật
* Giải thuật bằng ngôn ngữ tự nhiên
* Giải thuật bằng lưu đồ
2 Chương trình chi tiết
3 Kết quả đạt được
* Kết quả
* Nhận xét
III.Tài Liệu Tham Khảo
IV.Phụ lục
1.Quá trình thực hiện đề tài
2.Bảng phân chia công việc
Trang 3I Giới Thiệu Đề Tài
1 Mục tiêu thiết kế
- Viết chương trình mô phỏng hiệu ứng quảng cáo với 16 hiệu ứng trên chương trình Dev-C++ bằng ngôn ngữ C
2 Yêu cầu thiết kế
- Gồm 8 công việc:
+ In ra màn hình số lần thực hiện chương trình
+ Tạo menu điều khiển chương trình
+ Nhập từ bàn phím nội dung cần quảng cáo
+ Chọn hiệu ứng từ 1 đến 16 để thực hiện
+ Hiển thị thông báo khi chọn không đúng hiệu ứng từ 1 đến 16 và cho phép chọn lại
+ Nhấn Enter kết thúc hiệu ứng quảng cáo
+ Nhập từ bàn phím số 0 để sửa lại nội dung quảng cáo
+ Nhấn Esc để kết thúc chương trình
3 Giới hạn thiết kế
- Một tuần lên ý tưởng và thực hiện
- Số lượng thành viên thực hiện: 8 người
4 Hướng giải quyết
- Các thành viên ôn lại kiến thức đã học trên lớp
- Tham khảo tài liệu từ internet, giáo trình,
- Lên kế hoạch, phân công việc cụ thể
II Nội Dung
1 Giải thuật
* Giải thuật bằng ngôn ngữ tự nhiên
* Giải thuật bằng lưu đồ
2 Chương trình chi tiết
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>
#include<string.h>
#include<time.h>
typedef struct {
int x, y;
Trang 4}
toado;//truc tung y,truc hoanh x
typedef struct {
char s[99];
toado td;// ngang , doc
int tt, lan;
int solannhap;
}
chu;
// tao kieu cau truc cho chu s la noi dung cua chu
void TextColor(int x)
{
}
void gotoxy(int x,int y)
{
HANDLE hConsoleOutput;
COORD Cursor_an_Pos = { x,y};
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
}
void ff(chu * a) {
char m[20];
if (a -> tt != 0) strcpy(m, " ");
else strcpy(m, " ");
TextColor(7);
gotoxy(0, 0);
printf("1 so lan da nhap: %d lan\n",a->solannhap);
printf("2 noi dung quan cao: %s\n", a -> s);
printf("3 nhap hieu ung tu 1 den 16 \n%schon hieu ung: \n4 nhap 0 neu muon sua lai noi dung(quay lai 2)\n5 nhan Esc de thoat\n6 nhan Enter de chon lai (quay lai 3)", m,a->lan);
for (int i = 0; i < 120; i++);
printf("\ntruong DHCT nhom7");
}
void f(chu*a){
system("cls");
if (kbhit()) // phat hien co phim nhap
{
Trang 5char key = getch(); // luu phim vao key ma khong dung chuong trinh
if (key == 27) // 27 la ma ASCII
{
free(a);
exit(0);
} else if (key == 13) // 13 la ma ASCII
{
a -> lan = 0;
a -> tt = 0; // xoa hieu ung cu
}
}
}
void lan1(chu * a) { // hien thi chuoi xeo xuong
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
int t = 0;
ff(a); //an con tro
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(50);// toc do hien ra
TextColor(5);
if (t == 0) {
printf("%c", a -> s[k]);
k++;
}
}
k = 0;
}// hien con tro
printf(" ");
}
}
}
void lan2(chu * a) { // hien thi chuoi xeo len
Trang 6while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
int t = 0;
ff(a);
//an con tro
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(100);
if (t == 0) {
printf("%c",a->s[k]);
k++;
}
}
k = 0;
}// hien con tro
printf(" ");
}
}
}
void lan3(chu * a) { // chu xuat hien tu trai qua phai
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
ff(a);
//an con tro
for (int i = 0; i < n; i++) {
gotoxy(60 + i,15);
printf("%c", a -> s[i]);
Sleep(50);//toc do
Trang 7} // chu xuat hien tu trai qua phai
}// hien con tro
printf(" ");
}
}
void lan4(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
ff(a);
int n = strlen(a -> s);
char bokytu[] = " ";
//an con tro
for (int i = 0; i < n; i++) {
Sleep(40);
srand(time(NULL));
for (int k = 0; k < n; k++);
gotoxy(50 + i, 20);
if (i == n - 1) {
ff(a);
ff(a);
gotoxy(50,20);
printf("%s", a -> s); // hien thi toan bo chuoi
Sleep(300);
}
}// hien con tro
printf(" ");
}
}
}
void lan5(chu * a) { //hieu ung xeo qua xeo lai
while (1) {
f(a);
if (a -> tt == 0) break; // tt=0 nghia la noi dung da bi loai bo hieu ung, quay ve buoc nhap hieu ung
else {
int n = strlen(a -> s);
ff(a);
char c[51];
Trang 8int k = 0;
for (int i = 0; i <= n; i++) {
if (a -> s[i] == ' ' || a -> s[i] == 0) {
ff(a);
ff(a);
strncpy(c, a -> s + k, i - k);
c[i - k] = NULL;
k = i + 1;
gotoxy(50, 17);
printf("%s", c);
Sleep(300);
}
}
system("cls");
ff(a);
gotoxy(50 - (n / 2), 16);
printf("%s", a -> s); // hien thi toan bo chuoi Sleep(300);
}
}// hien con tro
printf(" ");
}
void lan6(chu * a) { // trai chay sang phai
while (1) {
f(a);
if (a -> tt == 0) break;
else {
char b[50];
int n = strlen(a -> s);
//an con tro
for (int k = 0; k <= n + 90; k++) {
system("cls");
ff(a);
gotoxy(1 + k, 16);
printf("%s", a -> s);
gotoxy(1 + k, 16);
printf("%s", b);
if (k % 2 == 0);
else{
printf("%c",' ');
Trang 9}Sleep(5);
}
}// hien con tro
printf(" ");
}}
void lan7(chu * a) { // hieu ung ket hop
while (1) {
f(a);
if (a -> tt == 0) break;
else{
int n=strlen(a->s);
ff(a);
//an con tro
for (int i=0;i<=n;i++) {
gotoxy(50-(n/2)+i,14);printf("%< ",a->s[i]);
gotoxy(50-(n/2)+i,13);printf("% c",a->s[i]);
gotoxy(i + 50,i+2);printf("%c",a->s[i]); // xeo xuong gotoxy(50,i+8);printf("%c",a->s[i]); //thang
gotoxy(i+50,n+1-(i-9)); printf("%c",a->s[i]);//xeo xuong Sleep(100);
} }
} // hien con tro
printf(" ");
}
void lan8(chu * a) { // hieu ung x
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n=strlen(a->s);
ff(a);
//an con tro
for( int i=0;i<=n+4+r;i++) {
for (int k=0;k<=i;k++)
Trang 10{
ff(a);
gotoxy(40+i-k,15);
if(k<=n) printf("%c",a->s[n-k]);
}Sleep(100);// tao tuong va di chuyen dong chu }char tam1[51], tam2[51];
strcpy(tam1, a->s);
strcpy(tam2, a->s);
for (int j = 0; j < n; j++) {
if (j % 2 == 0) tam1[j] = ' ';
else tam2[j]=' ';
}
for (int u = 0; u < 10; u++) {
gotoxy(40-u+3 , 15 - u);
printf("%s", tam1);
gotoxy(40-u-3 , 15 - u);
printf("%s", tam2);
gotoxy(40-u+3 , 15 + u);
printf("%s", tam1);
gotoxy(40-u-3 , 15 + u);
printf("%s", tam2);
gotoxy(40+u+3 , 15 - u);
printf("%s", tam1);
gotoxy(40+u+3 , 15 - u);
printf("%s", tam2);
gotoxy(40+u-3 , 15 + u);
printf("%s", tam1);
gotoxy(40+u-3 , 15 + u);
printf("%s", tam2);
Sleep(100);
}
}// hien con tro
printf(" ");
} }
void lan9(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
Trang 11else {
ff(a);
int n = strlen(a -> s);
//an con tro
for (int i = 0; i <= n; i++) {
gotoxy(50 + i, 15);
printf("%c", a -> s[i]);
gotoxy(50 + n - i, 16);
printf("%c", a -> s[n - i]);
Sleep(100);
} // xuat hien doi xung
int c = ' ';
for (int j = 0; j <= n; j++) {
gotoxy(50 + j, 15);
printf("%c", c);
gotoxy(50 + j, 16);
printf("%c", c);
Sleep(100);
}
}
}
printf(" ");
}
void lan10(chu * a) { //tu tren xuong while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
//an con tro
char a1[60], a2[60];
strcpy(a1, a -> s);
strcpy(a2, a -> s);
for (int u = 0; u < 10; u++) {
ff(a);
gotoxy(50, 12+u);
printf("%s", a1);
gotoxy(50, 13+u);
Trang 12printf("%s", a2);
Sleep(100);
}
}
}
printf("");
}
void lan11(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else{
int n=strlen(a->s);
ff(a);
//an con tro
for (int i=0;i<=n;i++) {
gotoxy(54-(n/2)+i,14);printf("%c",a->s[i]); gotoxy(54-(n/2)+i,15);printf("%c",a->s[i]); gotoxy(54-(n/2)+i,16);printf("%c",a->s[i]); Sleep(100);
} char c[]=" ";
gotoxy(54-(n/2),14);printf("%s",c);
Sleep(400);
gotoxy(54-(n/2),15);printf("%s",c);
Sleep(500);
gotoxy(54-(n/2),16);printf("%s",c);
Sleep(600);
}
}
printf("\33[?25h");
}
void lan12(chu * a) { //hieu ung chu xuat hien lan luot while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
ff(a);
//an con tro
Trang 13printf(" ");
for (int i = 0; i < n; i++) {
gotoxy(50 + i, 20);
printf("%c", a -> s[i]);
Sleep(100);
} // chu xuat hien tu trai qua phai char f1[50];
strcpy(f1, a -> s);
for (int k = 0; k < n; k++) { gotoxy(50 + k, 20);
printf("%s", f1);
Sleep(100);
system("cls"); // chu bien mat ff(a);
}
}
}
printf(" ");
}
void lan13(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
ff(a);
int n = strlen(a -> s);
//an con tro
for (int i = 0; i <= n; i++) { gotoxy(50 + n - i, 17);
printf("%c", a -> s[n - i]); Sleep(100);
}
int c = ' ';
for (int j = 0; j <= n; j++) { gotoxy(50 + n - 1 - j, 17); printf("%c", c);
Sleep(100);
}
}
}
Trang 14printf(" ");
}
void lan14(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
int t = 0;
ff(a);
//an con tro
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(200);
if (t == 0) {
printf("%c", a -> s[k]);// hien thi chuoi xeo xuong k++;
} else {
printf("%c",a->s[k]);// hien thi chuoi xeo len
k++;
}
}
k = 0;
t = 1;
}
}
}
// hien con tro
printf("");
}
void lan15(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
Trang 15int t = 0;
ff(a);
//an con tro
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) { Sleep(100);
if (t == 0) {
printf("%c", a -> s[k]);
gotoxy(55, i);
printf("%c", a -> s[k]);
k++;
} else {
gotoxy(51, i + 0);
printf("%c", a -> s[k]);
gotoxy(49,i + 1);
printf("%c", a -> s[k]);
gotoxy(47,i+1);
printf("%c", a -> s[k]);
gotoxy(45,i+1);
printf("%c", a -> s[k]);
gotoxy(57,i+0);
printf("%c", a -> s[k]);
gotoxy(59,i+1);
printf("%c", a -> s[k]);
gotoxy(61,i+1);
printf("%c", a -> s[k]);
gotoxy(63,i+1);
printf("%c", a -> s[k]);
k++; // hien thi chuoi hang doc }
}
k = 0;
t = 1;
}
}
}
printf("");//hien con tro
}
void lan16(chu * a) {
while (1) {
Trang 16f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
char c[] = " ";
int t = 0;
ff(a);
//an con tro
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(200);
if (t == 0) {
printf("%c", a -> s[k]);// chuoi doc k++;
} else {
gotoxy(40,i);
printf("%c", c[0]);
Sleep(100); //xoa chuoi doc
gotoxy(40+i,10);
printf("%c", a -> s[k]);
gotoxy(63,i+1);
printf("%c", a -> s[k]);
k++; // chuoi hang ngang
}
}
k = 0;
t = 1;
}
}
}
// hien con tro
printf("\33[?25h");
}
int main(int argc,
const char * argv[]) {
FILE *dem;
chu * a = (chu * ) malloc(sizeof(chu));
fscanf(dem,"%d",&a->solannhap);
Trang 17fclose(dem);
while(1){
system("cls");
a->s[0]=NULL;
a -> td.x = 12;
a -> td.y = 12;
a -> tt = 0;
a -> lan = 0;
ff(a);
gotoxy(22, 1);
fflush(stdin);
gets(a -> s); // Nhap noi dung
while (1) {
ff(a);
gotoxy(28, 3);
fflush(stdin);
scanf("%d", & a -> lan);// Nhap hieu ung
if (a->lan == 0) break;
else if (a -> lan < 1 || a -> lan > 16) {
a -> lan = 0;
system("cls");
ff(a);
gotoxy(35, 12);
printf("nhap trong khoang tu 1 den 16 !"); } // nhap sai khoang gia tri yeu cau nhap lai else {
a -> tt = 1;
switch (a -> lan) {
case 1:lan1(a);break;
case 2:lan2(a);break;
case 3:lan3(a);break;
case 4:lan4(a);break;
case 5:lan5(a);break;
case 6:lan6(a);break;
case 7:lan7(a);break;
case 8:lan8(a);break;
case 9:lan9(a);break;
case 10:lan10(a);break;
case 11:lan11(a);break;