Switch не верно работает - C (СИ)
Формулировка задачи:
Здравствуйте! Столкнулся с одной неприятной штукой. Код у меня может быть немного переполненным лишним и поэтому в нем не сразу разберешься, но, пожалуйста, помогите
В общем. В этом коде у меня происходит перемещение стрелками по некоторым элементам. Происходит перемещение тем, что у алмазиков появляется более толстый контур, если он есть, значит алмазик выделен, а контур рисует Draw_Outline, удаляет контур Delete_Outline, а Delete_All_Outline удаляет все контуры.
Проблема в том, что после того как я добавил "case 13" оно стало неправильно работать, хотя без него всё было идеально. Как такое может быть? Нажимаю кнопку вниз, а срабатывает кейс с кнопкой Enter, который удаляет алмазики.
Еще у меня есть проблема в том, что при помощи outtextxy текст выводится на черном фоне, можно ли как-то сделать, чтобы он выводился с тем фоном, который в графическом окне?
Весь код программы:
void Play (int Diamonds) { int random=rand()%2+1; // рандомный выбор игрока if (random==1) outtextxy(310,10,"ХОД ПЕРВОГО ИГРОКА"); else outtextxy(310,10,"ХОД ВТОРОГО ИГРОКА"); int x=85, y=130, code, count=1; setcolor(0); Draw_Outline(y,count); while (1) { code = getch(); switch (code) { case 77: if (getpixel(x+80,y)!=getpixel(20,20)&&getpixel(x+80,y)!=getpixel(805,y)) {x+=80; count++; setcolor(0); Draw_Outline(y,count); break;} // вправо else break; case 75: if (getpixel(x,y)==getpixel(x-80,y)) {x-=80; Delete_Outline(y, count); count--; break;} // влево else break; case 72: if (getpixel(85,y-80)!=getpixel(85,50)) {Delete_All_Outline(y,count); x=85; y-=80; count=1; setcolor(0); Draw_Outline(y,count); break;} // вверх else {int j=y; if (j!=130) while (j!=130) {j-=80; if (getpixel(85,j)!=getpixel(20,20)) {Delete_All_Outline(y,count); x=85; y=j; count=1; setcolor(0); Draw_Outline(y,count); break;}break;}} case 80: if (getpixel(85,y+80)!=getpixel(85,610)&&getpixel(85,y+50)!=getpixel(85,50)) {Delete_All_Outline(y,count); x=85; y+=80; count=1; setcolor(0); Draw_Outline(y,count); break;} // вниз else {int j=y; if (j!=530) while (j!=530) {j+=80; if (getpixel(85,j)!=getpixel(20,20)) {Delete_All_Outline(y,count); x=85; y=j; count=1; setcolor(0); Draw_Outline(y,count); break;}break;}} case 13: if (random==1) {random++; setcolor(COLOR(255,0,0)); outtextxy(310,3,"ХОД ПЕРВОГО ИГРОКА");} else {random--; setcolor(COLOR(255,0,0)); outtextxy(310,3,"ХОД ВТОРОГО ИГРОКА");} // Enter if (Diamonds!=1) {Delete_All_Outline(y,count); Delete_Diamonds(x,y,count); if (getpixel(85,y)==getpixel(20,20)) Diamonds--;} else {int N=1,j=85; for (int i=0; i<8; i++) {j+=80; if (getpixel(j,y)!=getpixel(20,20)) N++; else i=8;} if (N==count&&count!=1) {Delete_All_Outline(y,count); setcolor(COLOR(255,0,0)); outtextxy(245,582,"ВЫБЕРИТЕ ДРУГОЕ КОЛИЧЕСТВО АЛМАЗОВ!");} else if (count==1&&N==1) {Victory(random); return;} else {Delete_All_Outline(y,count); Delete_Diamonds(x,y,count);}} x=85; y=130; while(getpixel(85,y)==getpixel(20,20)) y+=80; count=1; setcolor(0); Draw_Outline(y,count); break; } } }
#include <conio.h> #include <ctime> #include <graphics.h> #include <cstdlib> int f=0; void Draw_Menu () { setfillstyle(1,COLOR(245,245,220)); bar(0,0,1000,600); setcolor(COLOR(220,220,125)); line(210,0,200,10); line(210,20,200,30); line(590,0,600,10); line(590,20,600,30); line(200,590,210,600); line(200,570,210,580); line(590,600,600,590); line(590,580,600,570); line(800,0,800,600); // âåðòèêГ*ëüГ*Г*Гї ëèГ*ГЁГї ìåæäó ìåГ*Гѕ ГЁ èãðîâûì ïîëåì line(10,10,200,10); // âåðõГ*ГїГї ëåâГ*Гї ëèГ*ГЁГї ïîëÿ line(600,10,790,10); // âåðõГ*ГїГї ГЇГ°Г*ГўГ*Гї ëèГ*ГЁГї ïîëÿ line(10,590,200,590); // Г*ГЁГ¦Г*ГїГї ëåâГ*Гї ëèГ*ГЁГї ïîëÿ line(600,590,790,590); // Г*ГЁГ¦Г*ГїГї ГЇГ°Г*ГўГ*Гї ëèГ*ГЁГї ïîëÿ line(10,10,10,590); // ëåâГ*Гї ëèГ*ГЁГї ïîëÿ line(790,10,790,590); // ГЇГ°Г*ГўГ*Гї ëèГ*ГЁГї ïîëÿ line(0,0,10,10); // óãîëîê ëåâî-âåðõ line(0,600,10,590); // óãîëîê ëåâî-Г*ГЁГ§ line(800,0,790,10); // óãîëîê ГЇГ°Г*ГўГ®-âåðõ line(800,600,790,590); // óãîëîê ГЇГ°Г*ГўГ®-Г*ГЁГ§ line(200,10,200,30); // âåðõГ*ГїГї ëåâГ*Гї ëèГ*ГЁГї îêîøêГ* line(600,10,600,30); // âåðõГ*ГїГї ГЇГ°Г*ГўГ*Гї ëèГ*ГЁГї îêîøêГ* line(200,30,600,30); // âåðõГ*ГїГї Г*ГЁГ¦Г*ГїГї ëèГ*ГЁГї îêîøêГ* line(210,20,590,20); // âåðõГ*ГїГї âåðõГ*ГїГї ëèГ*ГЁГї îêîøêГ* line(210,0,210,20); // âåðõГ*ГїГї ëåâГ*Гї Г°Г*ìêГ* îêîøêГ* line(590,0,590,20); // âåðõГ*ГїГї ГЇГ°Г*ГўГ*Гї Г°Г*ìêГ* îêîøêГ* line(200,590,200,570); // Г*ГЁГ¦Г*ГїГї ëåâГ*Гї ëèГ*ГЁГї îêîøêГ* line(600,590,600,570); // Г*ГЁГ¦Г*ГїГї ГЇГ°Г*ГўГ*Гї ëèГ*ГЁГї îêîøêГ* line(210,580,590,580); // Г*ГЁГ¦Г*ГїГї âåðõГ*ГїГї ëèГ*ГЁГї îêîøêГ* line(200,570,600,570); // Г*ГЁГ¦Г*ГїГї Г*ГЁГ¦Г*ГїГї ëèГ*ГЁГї îêîøêГ* line(210,600,210,580); // Г*ГЁГ¦Г*ГїГї ëåâГ*Гї Г°Г*ìêГ* îêîøêГ* line(590,600,590,580); // Г*ГЁГ¦Г*ГїГї ГЇГ°Г*ГўГ*Гї Г°Г*ìêГ* îêîøêГ* int x=0, y=0; for (int i=0; i<7; i++) { // ðèñóåì ГЊГҐГ*Гѕ if (i<2||i==3||i>4) { line(810,y+11,990,y+11); line(810,y+85,990,y+85); line(820,y+21,980,y+21); line(820,y+85,980,y+85); line(810,y+11,810,y+85); line(990,y+11,990,y+85); line(820,y+21,820,y+75); line(980,y+21,980,y+75); line(820,y+75,980,y+75); setfillstyle(1,COLOR(250,250,235)); floodfill(x+825,y+30,COLOR(220,220,125)); setfillstyle(1,COLOR(240,240,200)); floodfill(x+815,y+16,COLOR(220,220,125));} y+=84; } for (int i=0; i<2; i++) { // ðèñóåì ×åëîâåê ГЁ Êîìïüþòåð line(x+810,179,x+895,179); line(x+820,189,x+885,189); line(x+810,253,x+895,253); line(x+820,243,x+885,243); line(x+810,179,x+810,253); line(x+895,179,x+895,253); line(x+820,189,x+820,243); line(x+885,189,x+885,243); setfillstyle(1,COLOR(250,250,235)); floodfill(x+830,190,COLOR(220,220,125)); setfillstyle(1,COLOR(240,240,200)); floodfill(x+815,180,COLOR(220,220,125)); x+=95; } x=0; y=0; for (int i=0; i<6; i++) { // ðèñóåì Êîë-ГўГ® Г*ëìГ*çîâ line(x+810,y+347,x+864,y+347); line(x+815,y+352,x+859,y+352); line(x+810,y+379,x+864,y+379); line(x+815,y+374,x+859,y+374); line(x+810,y+347,x+810,y+379); line(x+815,y+352,x+815,y+374); line(x+864,y+347,x+864,y+379); line(x+859,y+352,x+859,y+374); setfillstyle(1,COLOR(250,250,235)); floodfill(x+816,y+353,COLOR(220,220,125)); setfillstyle(1,COLOR(240,240,200)); floodfill(x+812,y+350,COLOR(220,220,125)); if (i+1==1||i+1==3||i+1==5) y+=42; else {x+=63; y-=42;} } setfillstyle(1,COLOR(250,250,235)); floodfill (400,5,COLOR(220,220,125)); floodfill (400,595,COLOR(220,220,125)); floodfill(15,15,COLOR(220,220,125)); setfillstyle(1,COLOR(240,240,200)); floodfill(5,10,COLOR(220,220,125)); floodfill(795,10,COLOR(220,220,125)); floodfill(10,595,COLOR(220,220,125)); floodfill(205,10,COLOR(220,220,125)); floodfill(400,25,COLOR(220,220,125)); floodfill(400,575,COLOR(220,220,125)); floodfill(595,10,COLOR(220,220,125)); floodfill(610,5,COLOR(220,220,125)); floodfill(610,595,COLOR(220,220,125)); floodfill(205,590,COLOR(220,220,125)); floodfill(595,590,COLOR(220,220,125)); floodfill(10,5,COLOR(220,220,125)); outtextxy(850,40, "Г€ Гѓ Гђ ГЂ ГЌ Г€ ГЊ"); outtextxy(850,115, "ГЉ Г’ ГЋ ГЃ Г“ Г„ Г… Г’"); outtextxy(830,135, "Г‘ ГЋ ГЏ Г… Гђ ГЌ Г€ ГЉ ГЋ ГЊ ?"); outtextxy(825,208, "×åëîâåê"); outtextxy(930,208, "Êîìï"); outtextxy(843,283, "ÑÊÎËÜÊÎ ÊÓ×ÅÊ"); outtextxy(850,307, "Г‘ ÀËÌÀÇÀÌÈ?"); outtextxy(834,355, "1"); outtextxy(897,355, "2"); outtextxy(960,355, "3"); outtextxy(834,398, "4"); outtextxy(897,398, "5"); outtextxy(960,398, "6"); outtextxy(867,460, "ГЌ ГЂ Г— ГЂ Г’ Гњ"); outtextxy(869,545, "Г‚ Г› Г• ГЋ Г„"); } int Who_Player () { int x=815, y=250, code; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); setfillstyle(1,COLOR(240,240,200)); floodfill (x+96,y,COLOR(220,220,125)); while (1) { code = getch(); switch (code) { case 75: if (x!=911) {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x+=96; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} // âëåâî else {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x=815; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} case 77: if (x!=815) {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x-=96; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} // ГўГЇГ°Г*ГўГ® else {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x=911; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} case 13: switch(x) // Enter { case 815: setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 1; case 911: setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 2; } } } } int How_Many_Diamonds () { int x=811, y=348, code; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); while (1) { code = getch(); switch (code) { case 77: if (x!=937) {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x+=63; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} // ГўГЇГ°Г*ГўГ® else {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x=811; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} case 75: if (x!=811) {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x-=63; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} // âëåâî else {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); x=937; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} case 72: if (y!=348) {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); y-=42; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} // ââåðõ else {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); y=390; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} case 80: if (y!=390) {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); y+=42; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} // ГўГ*ГЁГ§ else {setfillstyle(1,COLOR(240,240,200)); floodfill (x,y,COLOR(220,220,125)); y=348; setfillstyle (1, COLOR(225,225,140)); floodfill (x,y,COLOR(220,220,125)); break;} case 13: switch(x) // Enter { case 811: if (y==348) {setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 1;} else {setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 4;} case 874: if (y==348) {setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 2;} else {setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 5;} case 937: if (y==348) {setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 3;} else {setfillstyle(1,COLOR(200,170,60)); floodfill (x,y,COLOR(220,220,125)); return 6;} } } } }
Решение задачи: «Switch не верно работает»
textual
Листинг программы
case 80: // вниз if (getpixel(85,y+80)!=getpixel(85,610)&&getpixel(85,y+50)!=getpixel(85,50)) { Delete_All_Outline(y,count); x=85; y+=80; count=1; setcolor(0); Draw_Outline(y,count); break; } else { int j=y; if (j!=530) while (j!=530) { j+=80; if (getpixel(85,j)!=getpixel(20,20)) { Delete_All_Outline(y,count); x=85; y=j; count=1; setcolor(0); Draw_Outline(y,count); break; } break; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д