about summary refs log tree commit diff stats
path: root/ext/wittle_generator/wittle_generator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ext/wittle_generator/wittle_generator.cpp')
-rw-r--r--ext/wittle_generator/wittle_generator.cpp116
1 files changed, 114 insertions, 2 deletions
diff --git a/ext/wittle_generator/wittle_generator.cpp b/ext/wittle_generator/wittle_generator.cpp index c2407cf..0efac07 100644 --- a/ext/wittle_generator/wittle_generator.cpp +++ b/ext/wittle_generator/wittle_generator.cpp
@@ -420,7 +420,7 @@ Rice::Object wittle_generator_generate_easy(Rice::Object /* self */) {
420Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) { 420Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) {
421 Generate generator; 421 Generate generator;
422 422
423 int choice = Random::rand() % 66; 423 int choice = Random::rand() % 69;
424 std::cout << "Generate MEDIUM: choice " << std::dec << choice << std::endl; 424 std::cout << "Generate MEDIUM: choice " << std::dec << choice << std::endl;
425 425
426 switch (choice) { 426 switch (choice) {
@@ -1015,6 +1015,33 @@ Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) {
1015 {Decoration::Dot_Intersection, 25}}}); 1015 {Decoration::Dot_Intersection, 25}}});
1016 break; 1016 break;
1017 } 1017 }
1018 case 66: {
1019 generator.setSymmetry(Panel::Symmetry::FlipNegXY);
1020 generator.generate(7, 7,
1021 {{{Decoration::Gap, 10},
1022 {Decoration::Dot_Intersection, 8},
1023 {Decoration::Start, 2},
1024 {Decoration::Exit, 1}}});
1025 break;
1026 }
1027 case 67: {
1028 generator.setSymmetry(Panel::Symmetry::ParallelV);
1029 generator.generate(7, 7,
1030 {{{Decoration::Gap, 12},
1031 {Decoration::Dot_Intersection, 10},
1032 {Decoration::Start, 2},
1033 {Decoration::Exit, 1}}});
1034 break;
1035 }
1036 case 68: {
1037 generator.setSymmetry(Panel::Symmetry::ParallelHFlip);
1038 generator.generate(7, 7,
1039 {{{Decoration::Gap, 12},
1040 {Decoration::Dot_Intersection, 10},
1041 {Decoration::Start, 2},
1042 {Decoration::Exit, 1}}});
1043 break;
1044 }
1018 } 1045 }
1019 1046
1020 Rice::String str(generator.AsCode()); 1047 Rice::String str(generator.AsCode());
@@ -1024,7 +1051,7 @@ Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) {
1024Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) { 1051Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) {
1025 Generate generator; 1052 Generate generator;
1026 1053
1027 int choice = Random::rand() % 40; 1054 int choice = Random::rand() % 46;
1028 std::cout << "Generate EXPERT: choice " << std::dec << choice << std::endl; 1055 std::cout << "Generate EXPERT: choice " << std::dec << choice << std::endl;
1029 1056
1030 switch (choice) { 1057 switch (choice) {
@@ -1497,6 +1524,91 @@ Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) {
1497 {Decoration::Dot_Intersection, 36}}}); 1524 {Decoration::Dot_Intersection, 36}}});
1498 break; 1525 break;
1499 } 1526 }
1527 case 40: {
1528 generator.setGridSize(7, 7);
1529 generator.setFlag(Generate::RequireCombineShapes);
1530 generator.setSymmetry(Panel::ParallelV);
1531 generator.setSymbol(Decoration::Start, 0, 14);
1532 generator.setSymbol(Decoration::Start, 8, 14);
1533 generator.setSymbol(Decoration::Exit, 6, 0);
1534 generator.setSymbol(Decoration::Exit, 14, 0);
1535 generator.generate(7, 7,
1536 {{{Decoration::Poly | Decoration::Color::Orange, 5}}});
1537 break;
1538 }
1539 case 41: {
1540 generator.setGridSize(7, 7);
1541 generator.setFlag(Generate::RequireCombineShapes);
1542 generator.setSymmetry(Panel::ParallelHFlip);
1543 generator.setSymbol(Decoration::Start, 0, 14);
1544 generator.setSymbol(Decoration::Start, 14, 6);
1545 generator.setSymbol(Decoration::Exit, 0, 0);
1546 generator.setSymbol(Decoration::Exit, 14, 8);
1547 generator.generate(7, 7,
1548 {{{Decoration::Poly | Decoration::Color::Orange, 5}}});
1549 break;
1550 }
1551 case 42: {
1552 generator.setGridSize(7, 7);
1553 generator.setFlag(Generate::RequireCombineShapes);
1554 generator.setSymmetry(Panel::ParallelVFlip);
1555 generator.setSymbol(Decoration::Start, 0, 14);
1556 generator.setSymbol(Decoration::Start, 8, 0);
1557 generator.setSymbol(Decoration::Exit, 6, 0);
1558 generator.setSymbol(Decoration::Exit, 14, 14);
1559 generator.generate(7, 7,
1560 {{{Decoration::Poly | Decoration::Color::Orange, 5}}});
1561 break;
1562 }
1563 case 43: {
1564 generator.setSymmetry(Panel::Symmetry::RotateLeft);
1565 generator.setSymbol(Decoration::Start, 4, 4);
1566 generator.setSymbol(Decoration::Start, 10, 4);
1567 generator.setSymbol(Decoration::Start, 4, 10);
1568 generator.setSymbol(Decoration::Start, 10, 10);
1569 generator.setSymbol(Decoration::Exit, 4, 0);
1570 generator.setSymbol(Decoration::Exit, 14, 4);
1571 generator.setSymbol(Decoration::Exit, 0, 10);
1572 generator.setSymbol(Decoration::Exit, 10, 14);
1573 generator.generate(
1574 7, 7,
1575 {{{Decoration::Triangle4 | Decoration::Color::Orange, 1},
1576 {Decoration::Triangle | Decoration::Color::Orange, 4}}});
1577 break;
1578 }
1579 case 44: {
1580 generator.setFlag(Generate::WriteInvisible);
1581 generator.setFlag(Generate::StartEdgeOnly);
1582 generator.setSymmetry(Panel::Symmetry::FlipXY);
1583 generator.setSymbol(Decoration::Exit, 0, 8);
1584 generator.setSymbol(Decoration::Exit, 8, 0);
1585 generator.generate(7, 7,
1586 {{{Decoration::Dot | Decoration::Color::Blue, 2},
1587 {Decoration::Dot | Decoration::Color::Yellow, 2},
1588 {Decoration::Dot, 8},
1589 {Decoration::Eraser | Decoration::Color::White, 1},
1590 {Decoration::Start, 1}}});
1591 break;
1592 }
1593 case 45: {
1594 generator.setFlag(Generate::WriteInvisible);
1595 generator.setSymmetry(Panel::Symmetry::FlipXY);
1596 generator.setSymbol(Decoration::Start, 0, 16);
1597 generator.setSymbol(Decoration::Start, 16, 0);
1598 generator.setSymbol(Decoration::Exit, 8, 0);
1599 generator.setSymbol(Decoration::Exit, 8, 16);
1600 generator.setSymbol(Decoration::Exit, 0, 8);
1601 generator.setSymbol(Decoration::Exit, 16, 8);
1602 generator.generate(
1603 8, 8,
1604 {{{Decoration::Triangle | Decoration::Color::Cyan, 3},
1605 {Decoration::Triangle | Decoration::Color::Yellow, 2},
1606 {Decoration::Star | Decoration::Color::Cyan, 3},
1607 {Decoration::Star | Decoration::Color::Yellow, 3},
1608 {Decoration::Stone | Decoration::Color::Cyan, 2},
1609 {Decoration::Stone | Decoration::Color::Yellow, 3}}});
1610 break;
1611 }
1500 } 1612 }
1501 1613
1502 Rice::String str(generator.AsCode()); 1614 Rice::String str(generator.AsCode());