Kết quả thực hiện

Một phần của tài liệu Báo cáo thực tập tại Samsung SVMC (Trang 66 - 78)

1. 2: Sản phẩm và dịch vụ

2.4.Kết quả thực hiện

2.4.1 Ứng dụng đã làm được

2.4.1.1 Mô tả ứng dụng

-Rắn săn mồi là game cổ điển, xuất hiện vào năm 1997 trên Nokia 6610 là những ô vuông xếp liên tiếp nhau di chuyển trên một màn hình màu xanh đơn giản, nhưng rắn săn mồi đã xây dựng rất thành công tên tuổi của mình. Với bốn trăm triệu bản xuất xưởng và đến hiện tại đã là phiên bản thứ tám. Game có sự hấp dẫn đối với người chơi.

 Rắn: di chuyển tự động và đổi hướng qua các key(w-lên,s-xuống,d- phải,a-trái)

Táo(con mồi ): tự động xuất hiện ngẫu nhiên trong map

 Tường(map ):ngăn rắn di chuyển và nhận định thua khi đâm vào tường • 2.4.1.2 Nội dung phần code

#include <iostream> #include <conio.h>

void run();

void printMap();

void initMap();

void move(int dx, int dy);

void update();

void changeDirection(char key);

void clearScreen();

void generateFood();

char getMapValue(int value);

// Map dimensions

const int mapwidth = 20;

const int mapheight = 20;

const int size = mapwidth * mapheight;

// The tile values for the map intmap[size];

// Snake head details int headxpos;

int headypos;

int direction;

// Amount of food the snake has (How long the body is) int food = 3;

// Determine if game is running

bool running;

int main() {

}

// Main game function

void run() { (adsbygoogle = window.adsbygoogle || []).push({});

// Initialize the map

initMap(); running = true; while (running) { // If a key is pressed

if (kbhit()) {

// Change to direction determined by key pressed

changeDirection(getch()); }

// Upate the map

update();

// Clear the screen

clearScreen(); // Print the map

printMap();

// wait 0.5 seconds

_sleep(500); }

// Print out game over text

std::cout << "\t\t!!!Game over!" << std::endl << "\t\tYour score is: "

<< food;

// Stop console from closing instantly

std::cin.ignore(); }

// Changes snake direction from input

void changeDirection(char key) { /*

W A + D S 1

4 + 2 3 */ switch (key) { case 'w': if (direction != 2) direction = 0; break; case 'd': if (direction != 3) direction = 1; break; case 's': if (direction != 4) direction = 2; break; case 'a': if (direction != 5) direction = 3; break; } }

// Moves snake head to new location

void move(int dx, int dy) {

// determine new head position

int newx = headxpos + dx; int newy = headypos + dy;

// Check if there is food at location

if (map[newx + newy * mapwidth] == -2) { // Increase food value (body length)

food++;

// Generate new food on map

generateFood(); } (adsbygoogle = window.adsbygoogle || []).push({});

// Check location is free

elseif (map[newx + newy * mapwidth] != 0) { running = false;

}

// Move head to new location

headxpos = newx; headypos = newy;

// Clears screen

void clearScreen() { // Clear the screen

system("cls"); }

// Generates new food on map

void generateFood() { int x = 0;

int y = 0; do {

// Generate random x and y values within the map

x = rand() % (mapwidth - 2) + 1; y = rand() % (mapheight - 2) + 1; // If location is not free try again

} while (map[x + y * mapwidth] != 0); // Place new food

map[x + y * mapwidth] = -2; }

// Updates the map

void update() {

// Move in direction indicated

switch (direction) { case 0: move(-1, 0); break; case 1: move(0, 1); break; case 2: move(1, 0); break; case 3: move(0, -1); break; }

// Reduce snake values on map by 1

for (int i = 0; i < size; i++) { if (map[i] > 0) map[i]--; }

// Initializes map

void initMap() {

// Places the initual head location in middle of map

headxpos = mapwidth / 2; headypos = mapheight / 2;

map[headxpos + headypos * mapwidth] = 1; // Places top and bottom walls

for (int x = 0; x < mapwidth; ++x) { map[x] = -1;

map[x + (mapheight - 1) * mapwidth] = -1; }

// Places left and right walls

for (int y = 0; y < mapheight; y++) { map[0 + y * mapwidth] = -1; (adsbygoogle = window.adsbygoogle || []).push({});

map[(mapwidth - 1) + y * mapwidth] = -1; }

// Generates first food

generateFood(); }

// Prints the map to console

void printMap() {

for (int x = 0; x < mapwidth; ++x) { for (int y = 0; y < mapheight; ++y) { // Prints the value at current x,y location

std::cout << getMapValue(map[x + y * mapwidth]); }

// Ends the line for next x value

std::cout << std::endl; }

}

// Returns graphical character for display from map value

char getMapValue(int value) {

// Returns a part of snake body

if (value > 0) return'o'; switch (value) {

case -1: return 'X'; // Return food

case -2: return 'O'; }

}

2.4.1.2 Kết quả đạt được

Bằng cách sử dụng trình biên dịch Microsoft visual C++ 2000, chúng ta có thể chơi trò chơi này ngay trên màn hình in ra . Sau khi Build chúng ta thu được màn hình của game như hình sau.

Màn hình hiển thị sẽ hiển thị kích thước bán đầu của con rắn và vị trí, đồng thời con mồi sẽ xuất hiện random trên toàn bộ map được đóng khung như trên.

Sau khi rắn đâm vào viền của map, màn hình sẽ dừng chương trình chạy của game dồng thời hiển thị dòng chữ GAME OVER ,và hiển thị số điểm mà bạn đạt được.

2.4.2 Đánh giá chung

Sinh viên thực tập đã làm được trong thời gian học tập tại doanh nghiệp: ● Học tập và làm việc phù hợp theo yêu cầu

● Đảm bảo đúng tiến độ yêu cầu. Những hạn chế mà sinh viên cần khắc phục:

● Chưa nắm chắc được các thuật toán nâng cao ( stack , queue) ● Tổ chức code đôi chỗ còn chưa gọn, chưa hoàn toàn tối ưu.

Qua quá trình thực tập ở Công ty Samsung Vietnam Mobile R&D Center, em đã hoàn thành được một ứng dụng Rắn săn mồi. Đây là bài tập trong quá trình thực tập của em tại công ty Samsung SVMC. Trong quá trình thực tập tại công ty Samsung SVMC, em đã học được rất nhiều từ các anh chị đã có kinh nhiệm đi trước, các bạn sinh viên thực tập trong ngành IT nói chung. Thời gian được học tập tại công ty đã giúp em rất nhiều về kiến thức nâng cao về kiến thức cơ bản và nâng cao về mảng, xử lí logic, các thuật toán sắp xếp và về các cấu trúc dữ liệu không nguyên thủy (stack, queue, tree). Những trải nghiệm ở môi trường doanh nghiệp trong thời gian thực tập đã giúp em khắc phục các lỗi về code, quy chuẩn, , tối ưu hóa.

Trong kì thực tập với tiêu chí cho sinh viên làm quen với môi trường doanh nghiệp thì báo cáo đã thể hiện thái độ, kiến thức và nỗ lực của sinh viên trong thời gian thực tập tại công ty theo tiến độ của Khoa CNTT trường đại học Công nghiệp Hà Nội.

KẾT LUẬN VÀ KIẾN NGHỊ 1. Kết luận

Thời gian thực tập tại Công ty Samsung Vietnam Mobile R&D Center đã giúp em có thêm nhiều kiến thức, kỹ năng và thái độ làm việc khi lần đầu trải nghiệm trong quá trình tìm hiểu về quy trình sản xuất, thi công ở một công ty product hàng đầu của Việt Nam.

Các kiến thức sinh viên đã học được tại doanh nghiệp: (adsbygoogle = window.adsbygoogle || []).push({});

- Hoàn thiện các kiến thức cơ bản và cập nhật về C, C+, Java,…

- Hiểu về các thuật toán cơ bản

- Học them được những tư duy logic, các thuật toán nâng cao

- Các kỹ năng liên quan đến debug trong lập trình Các kỹ năng mềm sinh viên đã được trau dồi tại công ty:

- Kỹ năng làm việc nhóm

- Kỹ năng thuyết trình

- Kỹ năng quản lí thời gian.

2. Kiến nghị

Yêu cầu thông tin tại Công ty Samsung Vietnam Mobile R&D Center vô cùng bảo mật do đó việc công khai mã nguồn cũng bị hạn chế cho các sinh viên thực tập. Thời gian báo cáo thực tập tốt nghiệp tại trường trùng với lịch đánh giá tại công ty, do đó tại thời điểm báo cáo thực tập này bản thân em không thể chuẩn bị được project cuối khóa đánh giá tại công ty để báo cáo trong thời gian này. Project cuối khóa đánh giá tại Samsung SVMC nhiều chức năng và giao diện nâng cao hơn.

NHẬT KÝ THỰC TẬP

Họ và tên: Nguyễn Văn Hùng Mã sinh viên: 2018602488

Đơn vị thực tập: Công ty Samsung Vietnam Mobile R&D Center Người hướng dẫn tại doanh nghiệp: Chị Nguyễn Thị Thanh Dung

Tuần Từ ngày - đến ngày (2021) Nội dung thực tập Kết quả đạt được Ghi chú 1 10/1- 14/01

- Đào tạo Hội nhập - Hướng dẫn sử

dụng công cụ: Visual Studio, Git

và GitHub

- Hiểu môi trường, văn hóa ứng xử, tính chất công việc tại Samsung SVMC

- Nắm được các quy định: thời gian làm việc, đeo thẻ, nội quy, cam kết, bảo mật thông tin - Sử dụng các kiến thức được học để xây dựng và hoàn thành bài tập 2 17/1- 21/01 Học kiến thức và áp dụng về Array -Nắm được kiến thức về Array và hoàn thành các bài tập. 4 24/1- 28/01 Học kiến thức và áp dụng về String -Nắm được kiến thức về String và hoàn thành các bài . 5 31/1- 04/02 Học kiến thức và áp dụng về Stack + Queue -Nắm được kiến thức về Stack và Queue - Thực hành bài tập 6 07/2-11/2 Học kiến thức và ứng dụng về Arraylist+ -Nắm được kiến thức về Arraylist vs Lsinkedlist - Thực hành bài tập

Linkedlist 7 14/2-18/2 Học kiến thức và áp dụng về DFS + BFS -Nắm được kiến thức về DFS và BFS và hoàn thành các bài tập 8 21/2-25/2 Đọc kiến thức và làm ứng dụng rắn săn mồi

Tạo được bức tường , con rắn , thức ăn,… 9 28/2-04/3 Đọc kiến thức và làm ứng dụng rắn săn mồi - Tạo được các động tác di chuyển và xử lý các

trường hợp xảy ra.

-Chuẩn bị cho bài tập cuối khóa thực tập bản hoàn thành

1

0 07/3-11/3 Review tổng hợp

TÀI LIỆU THAM KHẢO

[1] Trang chủ công ty cổ phần Samsung: https:// samsung.com/ vn/

[2] Trang: https://portal.ptit.edu.vn/trung-tam-nghien-cuu-va-phat-trien-dien- thoai-di-dong-samsung-viet-nam-svmc/ [3] Trang https://www.geeksforgeeks.org/array-data-structure/ [4] Trang https://www.geeksforgeeks.org/string-data-structure/ [5] Trang https://www.geeksforgeeks.org/arraylist-in-java/ [6] Trang https://www.geeksforgeeks.org/data-structures/linked-list/ [7] Trang https://www.geeksforgeeks.org/queue-data-structure/ [8] Trang https://www.geeksforgeeks.org/stack-data-structure/ [9] Trang https://samsungcareers.com.vn.

Một phần của tài liệu Báo cáo thực tập tại Samsung SVMC (Trang 66 - 78)