สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดีเพื่อน ๆ เราทุกคนรู้เกี่ยวกับเกมเปลวไฟ ฮ่า ๆ มันเป็นหนึ่งในเกมที่สนุกที่สุดที่ทำให้วัยเด็กของเรามีความสุขมากขึ้น ในคำแนะนำนี้ เราจะมาดูวิธีเขียนโค้ดโปรแกรม flames โดยใช้ภาษา C++
ขั้นตอนที่ 1: แนวคิดที่ใช้
ที่นี่ฉันใช้รายการเชื่อมโยงแบบทวีคูณแบบวงกลม
ขั้นตอนที่ 2: ฟังก์ชั่นหลัก
int หลัก ()
{
สตริง name1, name2;
int n1, n2; ศาล<<"ป้อนชื่อแรก:"; getline(cin, name1); cout<<"ป้อนชื่อที่สอง:"; getline(cin, name2);
}
อันดับแรก เราต้องได้สองชื่อที่มีช่องว่าง ดังนั้นฉันจึงใช้ฟังก์ชัน getline() เพื่อรับสตริงที่มีช่องว่าง
ขั้นตอนที่ 3: จะละเว้นอักขระพิเศษได้อย่างไร
ปล่อยเป็นโมฆะ (สตริง & a)
{
สำหรับ(int i=0;a!='\0';i++)
{
if(a>='a'&&a<='z') {}
อื่น if(a>='A'&&a<='Z'){}
อื่น
a='0';
}
}
ตอนนี้ เราต้องลบอักขระพิเศษเช่น &, $, ' ' … เป็นต้น เมื่อใช้ฟังก์ชันนี้ เราจะลบอักขระทั้งหมดที่ไม่ใช่ตัวอักษร ที่นี่ แทนที่จะลบ ฉันแทนที่ด้วย '0'
ขั้นตอนที่ 4: การลบอักขระตัวเดียวกัน
สำหรับ(i=0;name1!='\0';i++)
สำหรับ(j=0;name2[j]!='\0';j++)
if((name1==name2[j] || name1==name2[j]+32))
{
name1='0';
name2[j]='0';
หยุดพัก;
}
มันเป็นขั้นตอนแรกของเกมไฟ ที่เราต้องลบตัวละครเดียวกันที่มีอยู่ในสองชื่อ ข้อมูลโค้ดนี้ช่วยให้เราสามารถแทนที่อักขระเดียวกันด้วย '0' และยังใช้งานได้ดีแม้ว่าจะมีทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก คำสั่ง break ช่วยให้เราหลีกเลี่ยงการลบอักขระที่ซ้ำกัน
j=0;for(i=0;name1!='\0';i++)
if(name1!='0')
เจ++;
สำหรับ(i=0;name2!='\0';i++)
if(name2!='0')
เจ++;
if(j==0) cout<<"ไม่มีเปลวไฟ";
ที่นี่ เราลบ '0 ทั้งหมดที่มีอยู่ในทั้งสองชื่อ ดังนั้นในที่สุดอักขระทั้งหมดจะถูกลบออก จากนั้น j จะเพิ่มขึ้นว่าเป็นจำนวนตัวอักษรที่มีอยู่ในทั้งสองชื่อหลังจากลบอักขระเดียวกัน ตอนนี้เราต้องตรวจสอบว่ามีอักขระอย่างน้อยหนึ่งตัวหรือไม่ เพื่อให้โค้ดมีประสิทธิภาพ เราต้องบอกว่าไม่มีทางเล่นเกม flames ได้ หากไม่มีอักขระพิเศษ
ขั้นตอนที่ 5: การสร้างรายการเชื่อมโยงแบบทวีคูณแบบวงกลม
สตริง a="เปลวไฟ";
ขั้นแรก สร้างสตริงส่วนกลางที่มี "flames"
โหนดโครงสร้าง typedef{
ข้อมูลถ่าน;
โหนด *ถัดไป *ก่อนหน้า;
}โหนด;
โหนด *top=NULL, *ชั่วคราว;
ตอนนี้ สร้างโครงสร้างที่มีข้อมูลอักขระ ตัวชี้ที่อยู่ถัดไป และตัวชี้ที่อยู่ก่อนหน้า
จากนั้นสร้างตัวชี้ที่ชี้ไปที่ด้านบนของรายการที่เชื่อมโยง
โหนด* ins (ถ่าน a){
โหนด *new1;
new1=โหนดใหม่;
ใหม่1->ข้อมูล=a;
ใหม่1->ถัดไป=NULL;
new1->prev=NULL;
ถ้า(บน==โมฆะ)
{
ด้านบน=ใหม่1;
อุณหภูมิ=ด้านบน;
}
อื่น
{
temp->next=new1;
new1->prev=temp;
อุณหภูมิ=ใหม่1;
}
กลับด้านบน;
}
จากนั้นใส่สตริง "flames" ลงในรายการที่เชื่อมโยงแบบทวีคูณตามอักขระ
เช็คเป็นโมฆะ (int j){
int count1, แฟล็ก=0;
สำหรับ(int i=0;a!='\0';i++)
ด้านบน=ins(a);
}
ขั้นตอนที่ 6: รหัสเพื่อเล่นเปลวไฟ
เช็คเป็นโมฆะ (int j)
{
int count1, แฟล็ก=0;
สำหรับ(int i=0;a!='\0';i++)
ด้านบน=ins(a);
โหนด *cur=top, *prev1;
temp->next=top;
บน->ก่อนหน้า=อุณหภูมิ;
ในขณะที่(1)
{
นับ1=1;
ในขณะที่(count1<j)
{
cur=cur->ถัดไป;
นับ1++;
}
โหนด *temp1=cur;
prev1=cur->prev;
cur->prev->next=cur->next;
cur->next->prev=cur->prev;
temp1->next=NULL;
ฟรี (temp1);
cur=prev1->ถัดไป;
โหนด *ทดสอบ=cur;
if(test->data==test->next->data)
หยุดพัก;
}
}
เราจำเป็นต้องเรียกใช้รายการแบบวงกลมที่เป็นสตริง "ไฟ" ตามจำนวนอักขระที่ไม่ซ้ำ จากนั้นเราต้องลบตัวละครใน "เปลวไฟ" ที่ตรงกับการนับ เราควรตระหนักถึงการใช้รายการที่เชื่อมโยงแบบทวีคูณในข้อมูลโค้ดนี้ ช่วยได้มากในการลบอักขระบางตัว มันลบอย่างต่อเนื่อง จนกว่าจะถึงสภาพที่ตัวละครเดิมมาซ้ำๆ
if(test->data==test->next->data) แตก;
ขั้นตอนที่ 7: บอกผลลัพธ์
สวิตช์ (cur->data)
{
กรณี 'f':cout<<"เพื่อน&&";
หยุดพัก;
กรณี 'l':cout<<"ความรัก <3";
หยุดพัก;
กรณี 'a':cout<<"AFFECTION$";
หยุดพัก;
กรณี 'm':cout<<"การแต่งงาน:)";
หยุดพัก;
กรณี 'e':cout<<"ศัตรู:(";
หยุดพัก;
case 's':cout<<"พี่น้อง";
หยุดพัก; }
ใช้คำสั่ง switch นี้เพื่อบอกผลลัพธ์สุดท้ายที่เป็นอักขระตัวสุดท้ายที่เหลืออยู่หลังจากลบอักขระอื่นๆ ทั้งหมดตามการนับ
ตอนนี้คุณสามารถเล่นเปลวไฟได้อย่างง่ายดายเพียงแค่ป้อนชื่อ มันตลกใช่มั้ย เล่นเกมนี้โดยใช้ชื่อเพื่อนของคุณและทำให้พวกเขาโกรธ LOL ขอขอบคุณ.
ขั้นตอนที่ 8: รหัสสำหรับ Flames
รหัสฉบับสมบูรณ์สำหรับ FLAMES มีให้ที่นี่
github.com/naveeen684/Flames-code-using-C-/tree/master